Inhalt von dataset in Access Datenbank schreiben

hoellenhund

Grünschnabel
Hallo,

ich möchte den Inhalt eines DataSet in eine Access Datenbank schrein,

1. Lese ich eine Oracle Datanbank aus und speicher diese in einen DataSet
2. Dieses Dataset soll nun in eine Access Datanbank geschreiben werden.

Und da weiß ich nicht wie das geht. Mache das ganze in C#. Ich poste mal meinen Status:

Code:
OracleConnection con2 = new OracleConnection("User ID=test;password=test; Data Source=testdata");
            string commandString = Txt_SQL.Text;
            OracleDataAdapter DataAdapter = new OracleDataAdapter(commandString, con2);
            DataSet ds = new DataSet();
            DataAdapter.Fill(ds);

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb");
            string tabellenname = "tabelle1";

wie bekomme ich das jetzt in die tabelle in access?
 
Hallo, ich habe ein ähnliches Problem undn werde diesen Thread mal pushen.

Rahmenbedingungen:
Ich habe ein Word Dokument aus Welchem ich Daten auslese. Es sind auch ganz einfache Schluessel Werte Paare.
Die ausgelesenen Daten sollen dann in einer Datenbank gespeichert werden
(zunaechst entwickle ich erst einmal lokal gegen Access).

Anfangs hatte ich die Daten in einem Dictionary Objekt, dann habe ich mir gedacht, da man die Daten eh per .net in eine DB legt, warum nicht gleich ein DataTable nutzen.
Gesagt getan.
Funktioniert auch alles prima.

Nun stehe ich vor dem Problem den "ungebunden" DataTable komplett in die Access-Datenbank zu bekommen.

Um in eine Datenbank zu schreiben/lesen brauche ich ein DataSet und einen DataAdapter, welcher wiederum ein Command benoetigt, in welchem die Connectioninformation enthalten ist.
Muss ich nun erst eine Dummyabfrage fuer das Command absenden
(zB. Select * from MSysObjects) damit ich überhaupt dem DataAdapter die Connection information mitgeben kann?
 
so hab ich mein problem gelöst. Vielleicht hilft dir das irgendwie weiter:

Code:
//Daten auslesen
OracleConnection con2 = new OracleConnection("User ID=test;password=test; Data Source=test");
            string commandString = Txt_SQL.Text;
            OracleDataAdapter DataAdapter = new OracleDataAdapter(commandString, con2);
            DataSet ds = new DataSet();
            DataAdapter.Fill(ds);
            DataTable dt = new DataTable();
            DataAdapter.Fill(dt);
//Connection zur Access datei
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb");
            string tabellenname = "testdb";

//Create Befehl für Tabelle in Access Datenbank erstellen
StringBuilder sb = new StringBuilder();
            sb.Append("CREATE TABLE ");
            sb.Append(tabellenname);
            sb.Append("(");
            foreach (DataColumn field in dt.Columns)
            {
                sb.AppendFormat("  {0} {1},", field.ColumnName, field.DataType.ToString());
            }
            sb.Append(")");
            sb.Replace(",)", ")");
            sb.Replace("System.", "");

//Create Befehl ausführen
OleDbCommand cmd = new OleDbCommand(sb.ToString(), con);                  
            con.Open();            
            cmd.ExecuteNonQuery();
            con.Close();

//Status aller Datensätze auf added setzen
foreach (DataRow row in ds.Tables[0].Rows)
            {
                row.SetAdded();
            }

//In Access Datenbank schreiben
            OleDbDataAdapter dadapter2 = new OleDbDataAdapter();
            dadapter2.SelectCommand = new OleDbCommand("Select * from " + tabellenname, con);
            OleDbCommandBuilder custCB = new OleDbCommandBuilder(dadapter2);

            dadapter2.Update(ds);


Vielleicht hilft dir das ja irgendwie
 
Ja Danke,

habe mir Fast schon gedacht, dass ich die Tabelle manuell in der Access DB anlegen muss.
Ist halt der lange Weg, aber den muss man wohl meistens gehen :)
 
Zurück