Ausführen eines Befehls (ADO.NET)
Jeder in .NET Framework enthaltene .NET Framework-Datenanbieter besitzt ein eigenes Befehlsobjekt, das von DbCommand erbt. Der .NET Framework-Datenanbieter für OLE DB enthält ein OleDbCommand-Objekt, der .NET Framework-Datenanbieter für SQL Server enthält ein SqlCommand-Objekt, der .NET Framework-Datenanbieter für ODBC enthält ein OdbcCommand-Objekt und der .NET Framework-Datenanbieter für Oracle enthält ein OracleCommand-Objekt. Jedes dieser Objekte macht Methoden für das Ausführen von Befehlen auf der Grundlage des Befehlstyps und des gewünschten Rückgabewerts verfügbar. Die folgende Tabelle enthält eine Beschreibung der einzelnen Befehle.
Befehls |
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 |
SQL-Befehl, der die an der Datenquelle auszuführenden Anweisungen definiert |
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. Wenn Sie die ExecuteReader-Methode aufrufen, stehen die Rückgabewerte und die Ausgabeparameter jedoch erst zur Verfügung, wenn das DataReader-Objekt geschlossen ist. |
TableDirect |
Name der Tabelle |
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.
Shared Sub GetSalesByCategory(ByVal connectionString As String, _
ByVal categoryName As String)
Using connection As New SqlConnection(connectionString)
' Create the command and set its properties.
Dim command As SqlCommand = New SqlCommand()
command.Connection = connection
command.CommandText = "SalesByCategory"
command.CommandType = CommandType.StoredProcedure
' Add the input parameter and set its properties.
Dim parameter As 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()
Dim reader As SqlDataReader = command.ExecuteReader()
If reader.HasRows Then
Do While reader.Read()
Console.WriteLine("{0}: {1:C}", _
reader(0), reader(1))
Loop
Else
Console.WriteLine("No rows returned.")
End If
End Using
End Sub
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();
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();
}
}
Befehle für die Problembehandlung
Der .NET Framework-Datenanbieter für SQL Server enthält Leistungsindikatoren, mit denen Sie Probleme ermitteln können, die mit fehlgeschlagenen Befehlsausführungen im Zusammenhang stehen. Weitere Informationen finden Sie unter Leistungsindikatoren (ADO.NET).
Siehe auch
Weitere Ressourcen
Befehle und Parameter (ADO.NET)