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);
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?
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.
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
Und sie dann mit CommandType.Text aufrufen, müssen Sie Folgendes einschließen die Parameternamen im CommandText:
string callText = "dbo.Test @Text1, @Text2";
Andernfalls wird eine Fehlermeldung angezeigt, die darauf hinweist, dass der angegebene Parameter nicht vorhanden war bereitgestellt.
Zusammenfassung:
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!