Ausführen eines Befehls
Gilt für: .NET Framework .NET .NET Standard
Der Microsoft SqlClient-Datenanbieter für SQL Server verfügt über ein SqlCommand-Objekt, das Elemente von DbCommand erbt. Dieses Objekt stellt Methoden zum Ausführen von Befehlen basierend auf dem Befehlstyp und dem gewünschten Rückgabewert zur Verfügung, wie in der folgenden Tabelle beschrieben.
Get-Help | Rückgabewert |
---|---|
ExecuteReader |
Gibt ein DataReader -Objekt zurück. |
ExecuteScalar |
Gibt einen einzelnen Skalarwert zurück. |
ExecuteNonQuery |
Führt einen Befehl aus, der keine Zeilen zurückgibt. |
ExecuteXMLReader |
Gibt einen XmlReader zurück. Nur für ein SqlCommand -Objekt verfügbar. |
Jedes stark typisierte Befehlsobjekt unterstützt auch eine CommandType-Enumeration, die angibt, wie eine Befehlszeichenfolge interpretiert wird. Nähere Informationen dazu finden Sie in der folgenden Tabelle.
CommandType | Beschreibung |
---|---|
Text |
Ein SQL-Befehl, der die anweisungen definiert, die an der Datenquelle ausgeführt werden sollen. |
StoredProcedure |
Name der gespeicherten Prozedur Mit der Parameters -Befehlseigenschaft können Sie auf die Eingabe- und Ausgabeparameter sowie auf die Rückgabewerte zugreifen, und dies unabhängig davon, welche Execute -Methode aufgerufen wird. |
TableDirect |
Name der Tabelle |
Wichtig
Wenn Sie die ExecuteReader
-Methode aufrufen, stehen die Rückgabewerte und die Ausgabeparameter jedoch erst zur Verfügung, wenn das DataReader
-Objekt geschlossen ist.
Beispiel
Das folgende Codebeispiel zeigt, wie durch Festlegen seiner Eigenschaften ein SqlCommand-Objekt zum Ausführen einer gespeicherten Prozedur erstellt werden kann. Ein SqlParameter-Objekt wird zur Angabe des Eingabeparameters für die gespeicherte Prozedur verwendet. Der Befehl wird mit der ExecuteReader-Methode ausgeführt, und die Ausgabe des SqlDataReader wird im Konsolenfenster angezeigt.
static void GetSalesByCategory(string connectionString,
string categoryName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Create the command and set its properties.
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "SalesByCategory";
command.CommandType = CommandType.StoredProcedure;
// Add the input parameter and set its properties.
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@CategoryName";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = categoryName;
// Add the parameter to the Parameters collection.
command.Parameters.Add(parameter);
// Open the connection and execute the reader.
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
}
}
else
{
Console.WriteLine("No rows found.");
}
reader.Close();
}
}
}
Problembehandlung bei Befehlen
Mit dem Microsoft SqlClient-Datenanbieter für SQL Server werden Diagnoseindikatoren hinzugefügt, mit denen Sie zeitweilige Probleme aufgrund von Fehlern bei der Befehlsausführung erkennen können. Weitere Informationen finden Sie unter Diagnoseindikatoren in SqlClient.