Stapelaktualisierung / Einfügen mit SQLCommand in C #

8

Wie konnte ich Batch update/insert mit SQLCommand erreichen? Ich wollte SQLCommand text dynamisch in for loop von MyObject[] in C # mit 10 SQLParameter

erstellen

Im Falle von Bulk insert muss ich nach jedem Datensatz suchen, der bereits existiert oder nicht. d. h.

if not Exists(select pkid from table1 where fkid1=@fkid1 and fkid2=@fkid1)

begin

%Vor%

end

Dies ist von C # zu tun. Keine gespeicherte Prozedur in db

    
MayureshP 20.06.2011, 09:21
quelle

5 Antworten

13
%Vor%     
Saurabh 20.06.2011, 09:25
quelle
7

Nur das Anhängen von CommandTexts an einen großen Stapelbefehl ist nicht so nützlich wie es scheint.

Der Hauptvorteil von vorbereiteten Anweisungen in C # besteht darin, dass die Arbeitslast in der Datenbank beim Erstellen des Befehls ausgeführt wird. Nicht, wenn Sie es [z. mit ExecuteNonQuery() - die den Befehl nur ausführt, wenn Sie kein Transaktionsobjekt erstellt haben].

Um dies zu vermeiden und die Arbeitslast in der Datenbank nur einmal für alle Ihre Anweisungen zu erstellen, ist es wesentlich besser, ein Objekt Transaction zu erstellen und diese Transaktion zu committen. Dann werden alle Befehle ohne weitere Arbeitslast in der Datenbank ausgeführt.

Dies wäre eine bessere Einstellung:

%Vor%     
FluepkeSchaeng 19.02.2014 13:43
quelle
2

SqlBulkCopy ist für Situationen wie diese ziemlich praktisch.

    
David Wick 20.06.2011 09:28
quelle
0

Sie können Ihre Werte als kommagetrennte Zeichenfolge in gespeicherte Prozedurparameter senden und sie dann mit Split() sql function aufteilen.

probiere das

aus %Vor%

Ihre gespeicherte Prozedur wird so aussehen

%Vor%

Sie können beliebig viele Parameter mit demselben Ansatz in Insert oder Update

übergeben     
Amir Ismail 20.06.2011 09:38
quelle
0

Das ist meine schnelle Lösung für das Testen von Batch-Transaktionen.

%Vor%     
Andrzej Pauli 08.12.2016 15:02
quelle

Tags und Links