Ist es möglich, mehrere SQL-Anweisungen in eine ADO.NET Befehl.CommandText-Eigenschaft?
Zusammenfassung
Ich bin derzeit eine Anwendung schreiben, wo ich sich meine SQL-Anweisungen in einem Projekt die Parameter.
Innerhalb des Codes bekomme ich den Wert aus meiner Abfrage gibt die Abfrage selbst. Lassen Sie uns zum Beispiel sagen, dass meine SQL-Abfrage lautet in etwa so:
select col1, col2, col3 from my_table
Außerdem col1
, col2
und col3
sind aus verschiedenen Tabellen und migriert werden als Fremdschlüssel in my_table. Also, wenn es um die einfügen, ich habe für mehrere INSERT-Anweisungen, um die Werte aus den anderen Tabellen für diese oben genannten Spalten. Lassen Sie uns sagen, wie folgt:
BEGIN TRANSACTION
insert into first_table (col_x, col_y) values ('col_x', 'col_y')
insert into second_table (col_z, col_a) values ('col_z', 'col_a')
insert into third_table (col_b, col_c) values ('col_b', 'col_c')
und schließlich:
insert into my_table (col1, col2, col3, col_v) values (@col1, @col2, @col3, 'col_v')
COMMIT
Nehmen Sie es, dass diese col1
, col2
, col3
Spalten sind auto-increment-Integer für Tabellen first
, second
und third
.
Fragen
-
Könnte ich schreiben komplexer SQL-Anweisung in die IDbCommand.CommandText-Eigenschaft, während jede Anweisung würde durch ein Semikolon getrennt werden (
;
)? -
Ist es möglich, eine
BEGIN TRANSACTION...COMMIT/ROLLBACK
in diesemCommandText
Eigenschaft? -
Kurz gesagt, könnte ich schreiben so etwas?
Using cnx = New SqlConnection(connString) Using cmd = cnx.CreateCommand() cmd.CommandText = "BEGIN TRANSACTION " _ & "insert into first_table (col_x, col_y) values ('col_x', 'col_y');" _ & "insert into second_table (col_z, col_a) values ('col_z', 'col_a');" _ & "insert into third_table (col_b, col_c) values ('col_b', 'col_c');" _ & "insert into my_table (col1, col2, col3, col_v) values (@col1, @col2, @col3, 'col_v'); " _ & "COMMIT" cmd.ExecuterNonQuery() End Using End Using
EDIT #1
Sollte ich es erwähnt haben, bevor... Mack ' s Antwort ist der Weg, den ich gehen möchte, außer, dass ich nicht kann, weil der seltsame Strategien innerhalb der IT-Abteilung meines Klienten, außer, wenn ich diese eigene Komponente, die ich eher vermeiden Einfachheit halber. Beachten Sie, dass ich von Ihnen positiv bewertet werden Mack ' s Antwort sowieso, da ist es eine praktikable Lösung, egal was.
Vielen Dank im Voraus für Ihre wertvolle Hilfe und Zeit! Dies ist für mich entscheidend!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht gespeicherte Prozeduren verwenden, dann vielleicht dieser code kann Ihren Anforderungen entsprechen:
Habe ich Hinzugefügt, table-Variablen wie nötig, um die Beispiel-code ausgeführt werden, selbstverständlich können Sie nutzen Ihre permanente Tabellen.
Versuchen, mithilfe von Transaktionen...