Laden...

Profil von KingPin

myCSharp.de - Member Mitglied seit

Alle Beiträge

07.09.2005 - 14:09 Uhr

das wird es wahrscheinlich sein, jedoch wird es zu kompliziert wenn man es so macht-nehm ich mal an.
ich bin dabei ein prog zu schreiben, das xml dateien in eine sql datenbank schreibt.
die tabelle mit den spaltennamen kann ich schon ohne probleme erstellen.
manche dateien werden auch schon komplett reingeschrieben-aber eben nicht alle.
mit diesem code versuche ich es zu lösen- leider mit mäßigen erfolg.
vielleicht fällt dir etwas auf, wie man es besser machen könnte?

try
            {
                SqlTransaction myTrans;
                myTrans = conn.BeginTransaction();
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * from " + textBox1.Text, conn);
                adapter.SelectCommand.Transaction = myTrans;
                SqlCommandBuilder komm = new SqlCommandBuilder(adapter);
                adapter.TableMappings.Add("Table", dsEmployees.Tables[0].TableName);
                
                adapter.Update(dsEmployees);
                myTrans.Commit();
                conn.Close();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

aus dem dataset wurde die tabelle erstellt und jetzt müssen noch die datensätze in die datenbank rein.......

06.09.2005 - 14:50 Uhr

hi,

da ich mal wieder am programmieren bin, habe ich auch mal wieder ein wenig probleme.
ich habe ein dataset und dieses hat wiederum tabellen, diese möchte ich zusammenfriemeln zu einer, da ich das dataset in dann in einer datenbank unterbringen will.
mit:

dsEmployees.Tables[feld[0]].Merge(dsEmployees.Tables[feld[1]]);
dsEmployees.AcceptChanges();

es funktioniert aber nicht immer. ich bekomme dann folgende fehlermeldung:

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

woran liegt es eigentlich????
wäre für ein paar tipps dankbar.

das läuft, aber was soll das bewirken? die tabelle muss ich aus dem dataset erstellen.

diese 3 funktionen sollen da drin sein.
es ist eine leere datenbank. die xml datei liegt im dataset.
wie soll ich das packen, dass es alles ohne probs importiert wird. die last auf den server beim einlesen ist mir erst mal egal.

hallo

ich versuche ein prog zu schreiben das xml dateien in ein sql datenbank importiert.
leider habe ich ein paar vorbereitende probleme.
der eigentliche code der das file schreiben soll ist folgend:

 try
            {
                SqlTransaction myTrans;
                conn.Open();
                myTrans = conn.BeginTransaction();
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * from " + textBox1.Text, conn);
                adapter.SelectCommand.Transaction = myTrans;
                SqlCommandBuilder komm = new SqlCommandBuilder(adapter);
                adapter.TableMappings.Add("Table", dsEmployees.Tables[inn].TableName);
                adapter.Update(dsEmployees);
                myTrans.Commit();
                conn.Close();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

nun müsste ich aber in der existierenden datenbank die tabellen mit dem zugehörigen zeugs erstellen.
CREATE TABLE .......(spalte var.typ)
und das macht probleme....

könte mir jemand von euch ein tipp geben???

gegen ein fertiges stück code hab ich auch nix einzuwenden.....g

06.09.2005 - 08:15 Uhr

jetzt läuft wieder alles,
es lag bei mir daran, dass ich die ms vc# projekte in einem seperaten ordner gespeichert habe(nicht im originalen projektordner), dadurch hatte ich nicht volle berechtigungen.
habt vielen dank für eure raschen antworten!

05.09.2005 - 16:55 Uhr

ich hab windows mit alen sachen neu installiert und sitze in einer domäne.
eine zugriffsbeschränkung sollte ich, so weit ich weiss, nicht haben.
aber es wäre super wenn du es einem laien schritt für schritt erklären könntest....
danke!

05.09.2005 - 16:31 Uhr

hallo,

ich möchte mir durch die folgenden zeilen code den dateinamen anzeigen lassen.
das hat alles funktioneiert-bis jetzt.
das ist mein code:

string datei;
openFileDialog1.ShowDialog();
datei=openFileDialog1.FileName;

dadurch bekam ich auch was ich wollte, nur funktioniert das nach der neuinstllation von vc# nicht mehr und ich bekommen folgende fehlermeldung:

Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

außerdem erscheint eine ähnliche fehlermeldung noch bei diversen anderen sachen.
woran liegt das???

ich habe keine ahnung was ich ändern soll.
bin für jeden vorschlag dankbar.

22.03.2005 - 15:12 Uhr

hallo,

ich habe mit viel mühe jetzt meine db erstellt.
jetzt möchte ich abfragen realisieren. wenn ich eine spalte in mein datagrid lade, habe ich mehrere werte die gleich sind.
nun will ich eine abfrage mittels combobox realisieren-dabei stören mich die doppelt und tausendfach vorkommenden selben werte. ich möchte sozusagen eine liste der verschiedenen werte in die combobox übertragen. gibt es eine elegante variante?? denn meine kann man keinem menschen zumuten.
danke.

22.03.2005 - 11:08 Uhr

hallo!
ich habe in meinem prog 2 forms. in form1 wird eine sqlabfrage gemacht und ein dataset gefüllt.
wie stelle ich es jetzt an, dass ich auf das dataset aus form1 in das form2 bekomme, um es dort im datagrid auszugeben???

Xml

Beitrag
22.03.2005 - 11:04 Uhr

soweit ich weiß, kannst du eine xml datei in ein dateset einbinden.
die knoten die du suchst, werden im dataset als tabellen wiedergegeben.
das ganze kannst du dir im datagrid anzeigen lassen.
so weit ich dich verstanden habe, sollte es deine arbeit erleichtern und du baruchst keine schleife.

22.03.2005 - 09:32 Uhr

jetzt hab ich es hingebogen.
DataAdapter.Tablemappings.Add("Table", Tabellenname im dataset");
die daten werden in sql geschpeichert.
aber ein kosmetischer fehler ärgert mich noch.
während der laufzeit kann das programm nicht angesprochen werden(schriebvorgang)
wie kann ich das ändern, dass während des schreibens ich das prog anklicken kann, ohne dass die meldung kommt"keine rückmeldung" obwohl das prog nicht abgestürzt ist....

18.03.2005 - 15:23 Uhr

hmmm....
ich hab echt keine ahnung. habe jetzt die ganze zeit gesucht und probiert. es ist aber nix geworden.
weiss jemand rat??

18.03.2005 - 14:12 Uhr

danke für den link!!!
ich hab mir das angeschaut und umgesetzt.
jetzt bekomm ich noch ein fehlermeldung:
Update unable to find TableMapping['Table'] or DataTable 'Table'.
leider hab ich keine ahnung was falsch ist.

SqlConnection conn = new SqlConnection("server=localhost; Integrated Security=SSPI;database=Datenbank");
SqlDataAdapter adapter = new SqlDataAdapter("SELECT FROM Kunden", conn);
conn.Open();
SqlTransaction myTrans = conn.BeginTransaction();

        try  
        {                      
            SqlCommandBuilder cb = new SqlCommandBuilder(adapter);  
            adapter.Update(dsEmployees);  
            myTrans.Commit();  
        }  
        catch(Exception ex)  
        {  
            MessageBox.Show(ex.Message);  
            myTrans.Rollback();  
        }  
        finally  
        {  
            conn.Close();  
        }  

so ist mein code.
dsEmployees ist mein dataset, das ich aus der xml datei eingelesen hab.

18.03.2005 - 13:01 Uhr

hmm....
wie kann ich denn das dataset mit einem schwung in die datenbank kopieren, wenn alle spalten bereits erstellt sind????
soweit ich weiß, muss ich einen dataadapter erstellen. aber mit welchen parametern?? und das weitere vorgehen ist mir schleierhaft.

18.03.2005 - 11:20 Uhr

es wird spalte 1 komplett befüllt und dann wird spalte 2 befüllt... dabei entsteht die treppe.
ich habe versucht die "UPDATE" funktion zu benutzen, nur stürzt das ganze immer wilkürlich ab.

kann man das auch irgendwie mit einem dataadapter lösen???

18.03.2005 - 07:59 Uhr

hallo!

ich beschäftige mich auch mit diesem thema.
mein ansatz war es die sql db mittels daten die ich in einem datagrid abgelegt hatte zu befüllen.
ich kann die daten auch in die db schreiben(INSERT), nur ist die form unbrauchbar.
ich bekomme eine art "datentreppe"
SPALTE1 SPALTE2 SPALTE3

------------######
------------######
--------------------------######
--------------------------######

so siht die db aus wenn ich sie ausgebe. eigentlich unbrauchbar....
die datensätze sollten alle "nebeneinander" sein.
wie kann ich das verhindern oder ändern???

17.03.2005 - 15:38 Uhr

hallo!
ich habe eine xml datei mittlerweile in ein datagrid eingelesen.
wie kann ich dieses datagrid jetzt in sql speichern?? ich finde bei msdn irgendwie keine passende hilfe. 🙁
danke für eure antworten.

17.03.2005 - 15:34 Uhr

wenn du die xml im internet explorer anzeigen kannst ist sie nicht falsch aufgebaut.
du musst so weit ich weiß zwischen den tabellen des dataset "springen" also eine tabelle auswählen wo die daten drin sind. dann kannst du sie dir auch anzeigen lassen.

16.03.2005 - 14:11 Uhr

hallo!
so wie gestern habe ich auch heute eine frage =).
ich bin jetzt so weit, dass ich meine xml datei in sql importieren kann.
nur hab ich ein problem mit sql. es akzeptiert keine "-" in spalten die erzeugt werden sollen.
ich habe von einer funktion qstr() in ADOdb gelesen, die die zeichenketten so maskieren soll, dass sie angeblich dann akzeptiert werden sollen.
gibt es so eine funktion in c#??? habe bisher keine gefunden..
danke für eure hilfe!

15.03.2005 - 13:12 Uhr

hab vielen dank!!!!!!

nun ja auf das design des xml file hab ich kein einfluss.
die bekomme ich so und muss sie dann eben einlesen.
das bringt mich ein erheblichen schritt weiter.
noch mal vielen dank!

15.03.2005 - 10:31 Uhr

ich habe das auch mittels DataSet ausprobiert.
jedoch habe ich ein problem.
die tabellennamen auszulesen..kein problem-funktioniert.
rows auslesen.....auch kein problem
columns auslesen.... funktioniert, aber an der stelle komm ich ins stocken.

  • <xml SENDER="#######" RECIPIENT="#####" DATE="########">
  • <cnet-data>
  • <item MATERIAL-NR="###########">
    <CATEGORY1>#########</CATEGORY1>
    <CATEGORY2>#########</CATEGORY2>
  • <ATTRIBUTES>
    <ATRB1_NAME>##########</ATRB1_NAME>
    <ATRB1_VALUE>##########</ATRB1_VALUE>
    <ATRB3_NAME>##########</ATRB3_NAME>
    <ATRB3_VALUE>##########</ATRB3_VALUE>
    <ATRB6_NAME>##########</ATRB6_NAME>
    <ATRB6_VALUE>##########</ATRB6_VALUE>
    <ATRB7_NAME>#########</ATRB7_NAME>
    <ATRB7_VALUE>#########</ATRB7_VALUE>
    </ATTRIBUTES>
    <URL>#######################</URL>
    <SHORTTEXT>################</SHORTTEXT>
    </item>

so sieht die datei aus. items wiederholen sich immer. atrb1-7 kommen nicht immer alle zusammen vor.
mein problem ist es alles "passend" auszulesen. so dass "CATEGORY1" zu "######" und so weiter.

mit den befehlen
"rows" und "columns" scheint das nicht so recht zu funktionieren....
ich bin schon echt am verzweifeln, wie das zu machen ist.
das mit dem string basteln gefällt mir auch nicht unbedingt....
hättest du vielleicht ein code der das kann??? X(
bin für jede antort dankbar!

15.03.2005 - 09:56 Uhr

hallo alle zusammen,

ich habe mir vorgenommen xml dateien auszulesen um dann sie in eine sql datenbank zu schreiben. ich bin auf dem gebiet ein newbie.
hier ist der code den ich bisher geschrieben hab. der hat zwar noch ein paar kosmetische macken, aber es würde mich interessieren, ob ihr mein ansatz für richtig haltet bzw ein paar vorschläge hab was ich ändern könnte.

private void button1_Click(object sender, EventArgs e)
{
int index=0;
string datei, sqlstring1, sqlstring2, sqlbefehl, sqlstring3 = "",sqlstring4="",strtest="";
openFileDialog1.ShowDialog();
datei = this.openFileDialog1.FileName;
System.Data.DataSet set = new System.Data.DataSet();
set.ReadXml(datei);
for (int z = 0; z < set.Tables.Count; z++)
{
listBox1.Items.Add(set.Tables[z].TableName);
if (set.Tables[z].Rows.Count > 1)
{
strtest = set.Tables[z].TableName;
break;
}
}
MessageBox.Show(strtest);
System.Xml.XmlDocument xmldDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement xmlElem;
System.Xml.XmlNode xmlElem2,node,node2;
System.Xml.XmlNodeList xmlNodes;
xmldDoc.Load(datei);//Laden der Datei
xmlElem = xmldDoc.DocumentElement;//Ermitteln des Root-Elements
xmlNodes = xmlElem.GetElementsByTagName(strtest);

        for (int intI = 0; intI &lt; xmlNodes.Count; intI++)  
        {  
            sqlstring1 = &quot;&quot;;  
            sqlstring2 = &quot;&quot;;  
            sqlstring3 = &quot;&quot;;  
            sqlstring4 = &quot;&quot;;  
            xmlElem2 = xmlNodes[intI];//durchsuchen der Datensätze  
            while (true)  
            {  
                node = xmlElem2.ChildNodes[0];  
                if (node.ChildNodes[0].Name == &quot;#text&quot;)  
                    break;  
                else  
                {  
                    xmlElem2 = node.ChildNodes[0];  
               }                                    
        }  
            for(int ink=1;ink&lt;xmlElem2.ChildNodes.Count;ink++)  
            {  
                if (xmlElem2.ChildNodes[ink].Name != &quot;#text&quot;)  
                {  
                    node2 = xmlElem2.ChildNodes[ink];  
                    if (node2.ChildNodes[0].Name != &quot;#text&quot;)  
                    {  
                        for (int inl = 0; inl &lt; node2.ChildNodes.Count; inl++)  
                        {  
                            sqlstring3 = sqlstring3 + node2.ChildNodes[inl].Name + &quot; &quot;;  
                            sqlstring4 = sqlstring4 + node2.ChildNodes[inl].InnerText + &quot; &quot;;  
                        }  
                        MessageBox.Show(sqlstring3);  
                        MessageBox.Show(sqlstring4);  

                    }  
                }  
            }  
            listBox1.Items.Add(index);  
            for (int intJ = 0; intJ &lt; xmlElem2.ChildNodes.Count; intJ++)  
            {  
                listBox1.Items.Add(xmlElem2.HasChildNodes);  
                if (xmlElem2.ChildNodes[intJ].InnerText != null)  
                {  
                    if (xmlElem2.ChildNodes.Count - intJ == 0)  
                    {  
                        sqlstring1 = sqlstring1 + xmlElem2.ChildNodes[intJ].Name;//Name der Spalte  
                        sqlstring2 = sqlstring2 + &quot;&#39;&quot; + xmlElem2.ChildNodes[intJ].InnerText + &quot;&#39;&quot;;//Werte der Spalte  
                    }  
                    else  
                    {  
                        sqlstring1 = sqlstring1 + xmlElem2.ChildNodes[intJ].Name + &quot;,&quot;;  
                        sqlstring2 = sqlstring2 + &quot;&#39;&quot; + xmlElem2.ChildNodes[intJ].InnerText + &quot;&#39;,&quot;;  
                    }  
                }  
            }  
            sqlbefehl = &quot;INSERT INTO Tabellenname (&quot; + sqlstring1 + &quot;) VALUES (&quot; + sqlstring2+&quot;)&quot;;//nach einem schleifendurchlauf der liste werden die Daten in die Tabelle eingefügt  
            MessageBox.Show(sqlbefehl);  



        }  
    }
14.03.2005 - 15:27 Uhr

hallo,

ich bin ein newbie was c# und xml angeht und bin neugierig.
da ich xml dateien einlesen will, möchte ich die beste möglichkeit herausfinden.
ich bin auf die funktion GetXmlSchema() gestoßen. diese funktion liefert auch die werte, die ich haben will, aber leider nur als string.
wie kann ich das im code umsetzen um die werte zu verwenden??

danke.

14.03.2005 - 11:41 Uhr
  • <cnet-data>
  • <item MATERIAL-NR="###########">
    <CATEGORY1>###########>
    <CATEGORY2>#############</CATEGORY2>
  • <ATTRIBUTES>
    <ATRB1_NAME>##############</ATRB1_NAME>
    <ATRB1_VALUE>##########</ATRB1_VALUE>
    <ATRB3_NAME>#############</ATRB3_NAME>
    <ATRB3_VALUE>##########</ATRB3_VALUE>
    <ATRB6_NAME>#############</ATRB6_NAME>
    <ATRB6_VALUE>##########</ATRB6_VALUE>
    <ATRB7_NAME>##############</ATRB7_NAME>
    <ATRB7_VALUE>#############</ATRB7_VALUE>
    </ATTRIBUTES>
    <URL>####################</URL>
    <SHORTTEXT>###############</SHORTTEXT>
    </item>
    das ist ein ausschnitt der datei. die ###### werte lese ich mit
    listBox1.Items.Add(tabelle[2].Rows[0][0]); aus..
    soweitklappt das.
    listBox1.Items.Add(tabelle[2].Colums[....]);
    wenn ich jedoch die Colums auslese-hätte ich es gerne so..
    CATEGORY1 CATEGORY2 ATTRIBUTES URL SHORTTEXT als ausgabe aus tabelle 2
    jedoch kommen bei der ausgabe mehr werte als ich will!
    CATEGORY1, CATEGORY, 2 item_id, URL, SHORTTEXT, MATERIAL-NR, cnet-data_id
    in dieser reihenfolge.
    warum eigentlich
14.03.2005 - 10:54 Uhr

hallo!
es ist mein erster beitrag und ich habe auch gleich eine frage.
ich habe ein xml datei, die ich mittels dataset einlese. nun habe ich folgendes problem bzw. frage.
wie kannn ich die namen <...> der Rows auslesen? den inhalt kann ich problemlos auslesen. nur die namen nicht.
wie kann ich das im code realisieren?
danke!

HAT SICH ERLEDIGT. ⚠

ich habe die Colums gemeint, die ich auslesen wollte. jedoch gibt der befehl
columns.count auch werte zurück, die gar nicht in der xml datei drin sind.
skann das sein? oder habe ich was übersehen????
denn nicht alle zurückgegebenen werte sind für mich relevant.