Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Daten aus Datarow in mySQL Datenbank speichern


fluffy1234 - Sa 04.01.14 16:25
Titel: Daten aus Datarow in mySQL Datenbank speichern
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:


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:


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 - 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 - 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.


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();
    }
    }