C# Daten mit DataAdapter ins DataSet schreiben

Hallo Ihr Lieben, suche schon ne Weile nach der Lösung aber es hilft nix.

Ich habe mit C# eine Datenbank erstellt und gefüllt. Nun will ich das ganze mit einem DatenAdapter ins DataSet schreiben um das ganze als XML zu speichern.

Wenn ich das Programm starte gibt er mir den Fehler:
Fill: SelectCommand.Connection-Eigenschaft wurde nicht initialisiert.

Darauf hin habe ich festgestellt das ich es nicht schaffe
using Oracle.DataAccess.Client;

Hier mein Programm:

public DataSet GetDataSetFromDatabase()
{

string resultString = „“;

//Create connection;
OracleConnection conn = new OracleConnection();
OracleCommand comm = conn.CreateCommand();
OracleDataAdapter adapter = new OracleDataAdapter();
adapter.SelectCommand = new OracleCommand();
DataTable dt = new DataTable();

//Connection string
string user = „“;
string passwd = „“;
string server = „“;
string port = „“;
string sid = „“;

conn.ConnectionString = „User Id=“ + user + „:stuck_out_tongue_winking_eye:assword=“ + passwd + „;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=“ + server + „)(PORT=“ + port + „))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=“ + sid + „)));“;
//Ein Dataset erstellen und füllen
DataSet ds = new DataSet();
comm.CommandText = „SELECT * FROM elc“;

try
{
conn.Open();
Console.WriteLine(„Connection is open.“, conn.State);

comm.ExecuteNonQuery();

//Einen Datenadapeter erstellen, der es ermöglicht eine Brücke zwischen Datenbanken und Tabellen zu schlagen
int ret = adapter.Fill(ds);
adapter.FillSchema(ds, SchemaType.Source);
adapter.Fill(ds);

ds.WriteXml(„elc.xml“);

}
catch (OracleException e)
{
Console.WriteLine(e.ToString());
}
finally
{
//Close connection
conn.Close();
Console.WriteLine(„Connection closed.“);

}
return ds;
}

Also es wäre prima wenn ein paar konstruktive Vorschläge kommen würden.Es ist sehr wichtig denn ich brauche es für meine Diplomarbeit.
Vielen Dank im Voraus für Eure Mühe

LG otticlimber

Hi!
Mit Oracle im Besonderen kenne ich mich zwar nicht aus, aber ich vermute, dass die Reihenfolge einfach falsch ist.
Du erstellst eine neue Connection und bevor diese ihren ConnectionString bekommt, erstellt sie schon das OracleCommand. Daher kann sie zu diesem Zeitpunkt die Verbindungsdaten noch nicht weitergeben.
Probier’ mal, erst die Connection vollständig zu initialisieren, bevor Du CreateCommand() aufrufst.

Gruß,
Martin

Hi Martin,

Danke für die schnelle Antwort.
Habe das Problem gefunden.
Ich habe ja eine relationale Datenbank in Form eines Schemas gespeichert, das kann er mit select * FROM …
nicht abrufen.
Wenn ich direkte Abfragen stelle funktioniert es.

Also nochmals Danke.

Jetzt sieht es so aus:

string resultString = „“;

//Create connection;
OracleConnection conn = new OracleConnection();

//Connection string
string user = „“;
string passwd = „“;
string server = „“;
string port = „“;
string sid = „“;

conn.ConnectionString = „User Id=“ + user + „:stuck_out_tongue_winking_eye:assword=“ + passwd + „;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=“ + server + „)(PORT=“ + port + „))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=“ + sid + „)));“;
//Ein Dataset erstellen und füllen
DataSet ds = new DataSet();
OracleCommand comm = new OracleCommand();
comm.Connection = conn;
comm.CommandText = "select tutoriallink, tutorialid, tutorialtitle, extractvalue(
elearningcatalog,
‚elearningcatalog/content/Rangesoftopics/Remotesensing‘)
from elc
";
comm.CommandType = CommandType.Text;
OracleDataAdapter adapter = new OracleDataAdapter(comm);

try
{
conn.Open();
Console.WriteLine(„Connection is open.“, conn.State);

//Einen Datenadapeter erstellen, der es ermöglicht eine Brücke zwischen Datenbanken und Tabellen zu schlagen

adapter.FillSchema(ds, SchemaType.Mapped);
adapter.Fill(ds);

}
catch (OracleException e)
{
Console.WriteLine(e.ToString());
}
finally
{
//Close connection
conn.Close();
Console.WriteLine(„Connection closed.“);

}
return ds;
}