Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Каждый поставщик данных .NET Framework, включенный в .NET Framework, имеет собственный объект команды, наследуемый от DbCommand. Поставщик данных .NET Framework для OLE DB включает объект OleDbCommand, поставщик данных .NET Framework для SQL Server включает объект SqlCommand, поставщик данных .NET Framework для ODBC включает объект OdbcCommand, а поставщик данных .NET Framework для Oracle включает объект OracleCommand. Каждый из этих объектов предоставляет методы для выполнения команд на основе типа команды и требуемого возвращаемого значения, как описано в следующей таблице.
Приказ | Возвращаемое значение |
---|---|
ExecuteReader |
Возвращает объект DataReader . |
ExecuteScalar |
Возвращает одно скалярное значение. |
ExecuteNonQuery |
Выполняет команду, которая не возвращает строки. |
ExecuteXMLReader |
Возвращает XmlReader. Доступно только для объекта SqlCommand . |
Каждый строго типизированный объект команды также поддерживает перечисление CommandType, указывающее, как интерпретируется строка команды, как описано в следующей таблице.
Тип команды | Описание |
---|---|
Text |
Команда SQL, определяющая инструкции, выполняемые в источнике данных. |
StoredProcedure |
Имя хранимой процедуры. Свойство Parameters команды можно использовать для доступа к входным и выходным параметрам и возвращаемым значениям, независимо от того, какой метод вызывается Execute . При использовании ExecuteReader возвращаемые значения и выходные параметры не будут доступны до закрытия DataReader . |
TableDirect |
Имя таблицы. |
Пример
В следующем примере кода показано, как создать объект SqlCommand для выполнения хранимой процедуры, задав его свойства. Объект SqlParameter используется для указания входного параметра хранимой процедуры. Команда выполняется с помощью метода ExecuteReader, а выходные данные из SqlDataReader отображаются в окне консоли.
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($"{reader[0]}: {reader[1]:C}");
}
}
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
Команды для устранения неполадок
Поставщик данных .NET Framework для SQL Server добавляет счетчики производительности, чтобы определить периодические проблемы, связанные с неудачными выполнением команд. Для получения дополнительной информации см. в счетчиках производительности.