Spuštění příkazu
Každý zprostředkovatel dat rozhraní .NET Framework, který je součástí rozhraní .NET Framework, má vlastní objekt příkazu, který dědí z DbCommandrozhraní . Rozhraní .NET Framework Zprostředkovatel dat pro OLE DB obsahuje OleDbCommand objekt, rozhraní .NET Framework Zprostředkovatel dat pro SQL Server obsahuje SqlCommand objekt, rozhraní .NET Framework Zprostředkovatel dat pro ROZHRANÍ ODBC obsahuje OdbcCommand objekt a rozhraní .NET Framework Zprostředkovatel dat pro Oracle. OracleCommand obsahuje objekt. Každý z těchto objektů zveřejňuje metody pro spouštění příkazů na základě typu příkazu a požadované návratové hodnoty, jak je popsáno v následující tabulce.
Příkaz | Návratová hodnota |
---|---|
ExecuteReader |
Vrátí hodnotu DataReader objektu. |
ExecuteScalar |
Vrátí jednu skalární hodnotu. |
ExecuteNonQuery |
Spustí příkaz, který nevrací žádné řádky. |
ExecuteXMLReader |
Vrátí hodnotu XmlReader. K dispozici pouze pro SqlCommand objekt. |
Každý objekt příkazu silného CommandType typu podporuje také výčet, který určuje, jak se interpretuje řetězec příkazu, jak je popsáno v následující tabulce.
Commandtype | Popis |
---|---|
Text |
Příkaz SQL definující příkazy, které se mají spustit ve zdroji dat. |
StoredProcedure |
Název uložené procedury. Vlastnost příkazu můžete použít Parameters pro přístup ke vstupním a výstupním parametrům a návratovým hodnotám bez ohledu na to, kterou Execute metodu se volá. Při použití ExecuteReader nebudou DataReader návratové hodnoty a výstupní parametry přístupné, dokud se nezavře. |
TableDirect |
Název tabulky. |
Příklad
Následující příklad kódu ukazuje, jak vytvořit SqlCommand objekt pro spuštění uložené procedury nastavením jeho vlastností. Objekt SqlParameter slouží k zadání vstupního parametru uložené procedury. Příkaz se spustí pomocí ExecuteReader metody a výstup z SqlDataReader okna konzoly se zobrazí.
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
Řešení potíží s příkazy
Rozhraní .NET Framework Zprostředkovatel dat pro SQL Server přidává čítače výkonu, které umožňují detekovat přerušované problémy související s neúspěšnými spuštěními příkazů. Další informace naleznete v tématu Čítače výkonu.