Laden...

[SQL CE 3.5] 2 Queries in einem Command?

Erstellt von CaptainIglo vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.117 Views
C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren
[SQL CE 3.5] 2 Queries in einem Command?

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

I
106 Beiträge seit 2006
vor 15 Jahren

Wieso packst du die beiden Befehle nicht in eine Stored Proc und rufst im SqlCommand einfach die Stored Proc auf?

C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren

Weil der SQL CE keine Stored Procedures unterstützt und ich die Queries erst zur Laufzeit zusammenbaue...

I
106 Beiträge seit 2006
vor 15 Jahren

Dann führ halt 2 SqlCommands aus...

C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren

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

I
106 Beiträge seit 2006
vor 15 Jahren

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

C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren

Ich verwende den SQL Server COMPACT EDITION und dort geht das eben nicht...

I
106 Beiträge seit 2006
vor 15 Jahren

Wo ist dann dein Problem???
Die Antwort auf deine Frage hast du dir ja schon selbst gegeben und eine Alternative hab ich dir genannt.... 🤔

3.825 Beiträge seit 2006
vor 15 Jahren

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

C
CaptainIglo Themenstarter:in
366 Beiträge seit 2005
vor 15 Jahren

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