Hallo,
ich arbeite hier mit einer SQl Compact Edition 3.5 SP1 Datenbank und c# / .net 2.0 und wenn ich in einem Command 2 Queries (z.b. "INSERT INTO ....; SELECT @@IDENTITY;") ausführen will, bekomme ich immer einen SQL-Error an der der Stelle des 2. Query ("There was an error parsing the query. [ Token line number = 2,Token line offset = 2,Token in error = SELECT ]").
Wie kann ich das Problem lösen?
Gehen muss es doch irgendwie, da das SQL Management Studio das ja auch kann...
mfg
Capt.Iglo
Wieso packst du die beiden Befehle nicht in eine Stored Proc und rufst im SqlCommand einfach die Stored Proc auf?
Weil der SQL CE keine Stored Procedures unterstützt und ich die Queries erst zur Laufzeit zusammenbaue...
Das Problem ist, dass ich mehrere hundert Queries habe (Code wurde von einer "vollwertigen" DB auf CE portiert), welche teilweise so aufgebaut sind und alle umzubauen sehr viel Arbeit wäre...
Also 2 SELECT Statements funktionieren bei mir problemlos (getestet mit SQL Server 2005 Standard)....
SqlDataAdapter da = new SqlDataAdapter("select top 1 * from table_a;select top 1 * from table_b;", con);
con.Open();
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
Dann hab ich 2 Tables in meinem DataSet...
Ich verwende den SQL Server COMPACT EDITION und dort geht das eben nicht...
Wo ist dann dein Problem???
Die Antwort auf deine Frage hast du dir ja schon selbst gegeben und eine Alternative hab ich dir genannt.... 🤔
Hallo CaptainIglo,
der SQL Compact Server kann nicht mehrere SQL-Kommandos auf einmal.
Du musst jedes Kommando einzeln ausführen, das ist aber ganz einfach :
string[] sqlstr2 = sqlstr.Split(';');
conn.Open();
foreach (string sqlstr3 in sqlstr2)
{
DbCommand cmd2 = CreateCommand(sqlstr3, conn);
anz = cmd2.ExecuteNonQuery();
}
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Ich mache es jetzt so wie BerndFfm vorgeschalgen hat, da ich das Ausführen der Command sowieso an einer Stelle zusammengefasst habe, muss allerdings noch etwas "Tricksen" mit den ExecuteScalar/ExecuteReader...