Autor Beitrag
fluffy1234
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 04.01.14 16:25 
Hallo Leute,

ich stehe etwas auf dem Schlauch. Ich habe ein Programm geschrieben, dass eine XML-Datei in ein Dataset ließt und mir diese dann in der Konsole ausgibt.
Nun möchte ich ich die DataRows in eine vorhandene Datenbank einfügen.

So lese ich die XML datei aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
string temp = "";
DataSet myDataSet = new DataSet("myDataSet");
myDataSet.ReadXml("Personen.xml", XmlReadMode.Auto);

....

//rows auslesen

for (int i = 0; i < tb.Rows.Count; i++)
{
DataRow dr = tb.Rows[i];

Console.Write("      ");

for (int a = 0; a < tb.Columns.Count; a++)
{
temp = dr[tb.Columns[a].ColumnName] + " : ";

Console.Write(temp);
}
Console.WriteLine();


So füge ich Daten in die Datenbank ein:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
static void Main(string[] args)
{
string connString = "Server=localhost;Port=3306;Database=personenliste;Uid=****;password=***;";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = "Insert into person (vorname, nachname, alter, telefon, ort) values(--> ?????????? <--)";
conn.Open();
command.ExecuteNonQuery();

conn.Close();


Ich verstehe jedoch nicht und konnte irgendwie auch nichts passendes finden, wie ich die Daten, die in die Konsole geschrieben werden, speichern kann und dann als values in die Datenbank einfügen kann.

Hoffe ihr könnt mir helfen.

Grüße
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Sa 04.01.14 17:23 
Hallo

Deine Daten die du in die DB speichern willst hast du ja bereits in dem Dataset. (die Console ist ja nur eine Anzeige)

Also musst du die Daten aus dem Dataset in die DB Speichern.

Gruss David
mmgg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: So 06.07.14 23:00 
(ungeteestet und für SQLCLient)

Im value Abschnitt vom SQL string nimmst du Bezug auf die jeweiligen Tabellenzellen.
Habe jetzt nur für 'telefon' und 'ort' eingefügt. Die convertierung zu double für telefon steht da nur, damit du das auch hast, für den fall dass sowas vorkommt.

Es ist ausserdem zu empfehlen solche INSERTS in eine Transaaction einzubinden(hab ich jetzt nicht parat) auch weil das Schreiben in die Datenbank quasi in einem Stück passiert.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
string temp = "";
            DataSet myDataSet = new DataSet("myDataSet");
            myDataSet.ReadXml("Personen.xml", XmlReadMode.Auto);

            DataTable tb;

            string connString = "Server=localhost;Port=3306;Database=personenliste;Uid=****;password=***;";
           SqlConnection conn = new SqlConnection(connString);
           SqlCommand command = new SqlCommand();

            conn.Open();

            tb = myDataSet.Tables["Personen"];        

            for (int i = 0; i < tb.Rows.Count; i++)
               {           
                   command.CommandText = "Insert into person (vorname, nachname, alter, telefon, ort)" + 
                   " VALUES (" + Convert.ToDouble(tb.Rows[i]["telefon"]) + ",'" +  tb.Rows[i]["ort"] + "')";
                  command.ExecuteNonQuery();
         
        }
conn.Close();
    }
    }