Wykonywanie polecenia
Każdy dostawca danych programu .NET Framework dołączony do programu .NET Framework ma własny obiekt polecenia, który dziedziczy z DbCommandprogramu . Dostawca danych .NET Framework dla OLE DB zawiera OleDbCommand obiekt, Dostawca danych .NET Framework dla programu SQL Server zawiera SqlCommand obiekt, Dostawca danych .NET Framework dla ODBC zawiera OdbcCommand obiekt, a Dostawca danych .NET Framework dla oracle zawiera OracleCommand obiekt. Każdy z tych obiektów uwidacznia metody wykonywania poleceń na podstawie typu polecenia i żądanej wartości zwracanej, jak opisano w poniższej tabeli.
Polecenie | Wartość zwracana |
---|---|
ExecuteReader |
Zwraca DataReader obiektu. |
ExecuteScalar |
Zwraca pojedynczą wartość skalarną. |
ExecuteNonQuery |
Wykonuje polecenie, które nie zwraca żadnych wierszy. |
ExecuteXMLReader |
Zwraca wartość XmlReader. Dostępny tylko dla SqlCommand obiektu. |
Każdy obiekt polecenia silnie typizowanego obsługuje CommandType również wyliczenie określające sposób interpretowania ciągu polecenia zgodnie z opisem w poniższej tabeli.
Commandtype | opis |
---|---|
Text |
Polecenie SQL definiujące instrukcje do wykonania w źródle danych. |
StoredProcedure |
Nazwa procedury składowanej. Możesz użyć Parameters właściwości polecenia, aby uzyskać dostęp do parametrów wejściowych i wyjściowych i zwracanych wartości, niezależnie od metody, która Execute jest wywoływana. W przypadku używania ExecuteReader funkcji wartości zwracane i parametry wyjściowe nie będą dostępne do momentu DataReader zamknięcia. |
TableDirect |
Nazwa tabeli. |
Przykład
W poniższym przykładzie kodu pokazano, jak utworzyć SqlCommand obiekt w celu wykonania procedury składowanej, ustawiając jego właściwości. Obiekt SqlParameter służy do określania parametru wejściowego procedury składowanej. Polecenie jest wykonywane przy użyciu ExecuteReader metody , a dane wyjściowe z elementu SqlDataReader są wyświetlane w oknie konsoli.
static void GetSalesByCategory(string connectionString,
string categoryName)
{
using (SqlConnection connection = new(connectionString))
{
// Create the command and set its properties.
SqlCommand command = new()
{
Connection = connection,
CommandText = "SalesByCategory",
CommandType = CommandType.StoredProcedure
};
// Add the input parameter and set its properties.
SqlParameter parameter = new()
{
ParameterName = "@CategoryName",
SqlDbType = SqlDbType.NVarChar,
Direction = ParameterDirection.Input,
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();
}
}
}
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()
Using 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 Using
End Sub
Rozwiązywanie problemów z poleceniami
Program .NET Framework Dostawca danych dla programu SQL Server dodaje liczniki wydajności, aby umożliwić wykrywanie sporadycznych problemów związanych z nieudanymi wykonaniami poleceń. Aby uzyskać więcej informacji, zobacz Liczniki wydajności.