Heim > Datenbank > MySQL-Tutorial > Ist „cmd.CommandType = CommandType.StoredProcedure;' beim Ausführen gespeicherter Prozeduren in C# erforderlich?

Ist „cmd.CommandType = CommandType.StoredProcedure;' beim Ausführen gespeicherter Prozeduren in C# erforderlich?

Barbara Streisand
Freigeben: 2024-12-21 07:14:09
Original
428 Leute haben es durchsucht

Is `cmd.CommandType = CommandType.StoredProcedure;` Necessary When Executing Stored Procedures in C#?

Befehlstyp für SQL-Befehle festlegen: StoredProcedure vs. Text

Bei der Verwendung gespeicherter Prozeduren in C# stößt man häufig auf Code wie den folgenden:

string sql = "GetClientDefaults";

SqlCommand cmd = new SqlCommand(sql);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@computerName", computerName);
Nach dem Login kopieren

Es stellt sich jedoch die Frage: Ist die Zeile cmd.CommandType = CommandType.StoredProcedure; notwendig, und welche möglichen Auswirkungen hat es, wenn man es nicht verwendet?

Leistungsüberlegungen

Laut Leistungstests führt SQL Server die Parametrisierung unabhängig davon durch, ob Sie CommandType.Text oder CommandType.StoredProcedure verwenden. Bei Verwendung von CommandType.StoredProcedure erfolgt die Parametrisierung jedoch effizienter durch SQL Server. Dies führt zu einem Geschwindigkeitsvorteil bei der Verwendung von CommandType.StoredProcedure.

Parameterdeklarationen

Bei der Verwendung von CommandType.Text ist es wichtig, die Parameternamen in den CommandText selbst aufzunehmen. Dies liegt daran, dass der sp_executesql-Wrapper, der von SQL Server zum Parametrisieren der Anweisung verwendet wird, die Parameternamen nicht automatisch übergibt. Daher müssen Sie sie manuell angeben, um eine ordnungsgemäße Ausführung sicherzustellen.

Wenn Sie beispielsweise eine Prozedur wie diese erstellen:

create procedure dbo.Test
(
   @Text1 varchar(10) = 'Default1'
  ,@Text2 varchar(10) = 'Default2'
)
as
begin
   select @Text1 as Text1, @Text2 as Text2
end
Nach dem Login kopieren

Und sie dann mit CommandType.Text aufrufen, müssen Sie Folgendes einschließen die Parameternamen im CommandText:

string callText = "dbo.Test @Text1, @Text2";
Nach dem Login kopieren

Andernfalls wird eine Fehlermeldung angezeigt, die darauf hinweist, dass der angegebene Parameter nicht vorhanden war bereitgestellt.

Fazit

Zusammenfassung:

  • Für eine optimale Leistung verwenden Sie CommandType.StoredProcedure beim Ausführen gespeicherter Prozeduren.
  • Bei Verwendung von CommandType. Text, achten Sie auf die Parameterdeklaration im CommandText.

Das obige ist der detaillierte Inhalt vonIst „cmd.CommandType = CommandType.StoredProcedure;' beim Ausführen gespeicherter Prozeduren in C# erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage