SqlCommand Класс

Определение

Представляет инструкцию Transact-SQL или хранимую процедуру, выполняемую над базой данных SQL Server.Represents a Transact-SQL statement or stored procedure to execute against a SQL Server database. Этот класс не наследуется.This class cannot be inherited.

public ref class SqlCommand sealed : System::Data::Common::DbCommand, ICloneable, IDisposable
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
type SqlCommand = class
    inherit DbCommand
    interface IDbCommand
    interface ICloneable
    interface IDisposable
Public NotInheritable Class SqlCommand
Inherits DbCommand
Implements ICloneable, IDisposable
Наследование
Реализации

Примеры

В следующем примере создается SqlConnection, SqlCommandи SqlDataReader.The following example creates a SqlConnection, a SqlCommand, and a SqlDataReader. Пример считывает данные, записывая их в консоль.The example reads through the data, writing it to the console. Наконец, в примере закрывается SqlDataReader, а затем SqlConnection при выходе из Using блоков кода.Finally, the example closes the SqlDataReader and then the SqlConnection as it exits the Using code blocks.

private static void ReadOrderData(string connectionString)
{
    string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        using(SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
    }
}
Public Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = command.ExecuteReader()
        Try
            While reader.Read()
                Console.WriteLine(String.Format("{0}, {1}", _
                    reader(0), reader(1)))
            End While
        Finally
            ' Always call Close when done reading.
            reader.Close()
        End Try
    End Using
End Sub

В следующем примере показано, как создать и выполнить различные типы объектов SqlCommand.The following sample shows how to create and execute different types of SqlCommand objects.

Сначала необходимо создать образец базы данных, выполнив следующий скрипт:First you must create the sample database, by executing the following script:

USE [master]  
GO  
  
CREATE DATABASE [MySchool]  
GO  
  
USE [MySchool]  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
CREATE procedure [dbo].[CourseExtInfo] @CourseId int  
as  
select c.CourseID,c.Title,c.Credits,d.Name as DepartmentName  
from Course as c left outer join Department as d on c.DepartmentID=d.DepartmentID  
where c.CourseID=@CourseId  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
create procedure [dbo].[DepartmentInfo] @DepartmentId int,@CourseCount int output  
as  
select @CourseCount=Count(c.CourseID)  
from course as c  
where c.DepartmentID=@DepartmentId  
  
select d.DepartmentID,d.Name,d.Budget,d.StartDate,d.Administrator  
from Department as d  
where d.DepartmentID=@DepartmentId  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
Create PROCEDURE [dbo].[GetDepartmentsOfSpecifiedYear]   
@Year int,@BudgetSum money output  
AS  
BEGIN  
        SELECT @BudgetSum=SUM([Budget])  
  FROM [MySchool].[dbo].[Department]  
  Where YEAR([StartDate])=@Year   
  
SELECT [DepartmentID]  
      ,[Name]  
      ,[Budget]  
      ,[StartDate]  
      ,[Administrator]  
  FROM [MySchool].[dbo].[Department]  
  Where YEAR([StartDate])=@Year  
  
END  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
CREATE TABLE [dbo].[Course]([CourseID] [nvarchar](10) NOT NULL,  
[Year] [smallint] NOT NULL,  
[Title] [nvarchar](100) NOT NULL,  
[Credits] [int] NOT NULL,  
[DepartmentID] [int] NOT NULL,  
 CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED   
(  
[CourseID] ASC,  
[Year] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
CREATE TABLE [dbo].[Department]([DepartmentID] [int] IDENTITY(1,1) NOT NULL,  
[Name] [nvarchar](50) NOT NULL,  
[Budget] [money] NOT NULL,  
[StartDate] [datetime] NOT NULL,  
[Administrator] [int] NULL,  
 CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED   
(  
[DepartmentID] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
CREATE TABLE [dbo].[Person]([PersonID] [int] IDENTITY(1,1) NOT NULL,  
[LastName] [nvarchar](50) NOT NULL,  
[FirstName] [nvarchar](50) NOT NULL,  
[HireDate] [datetime] NULL,  
[EnrollmentDate] [datetime] NULL,  
 CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED   
(  
[PersonID] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
CREATE TABLE [dbo].[StudentGrade]([EnrollmentID] [int] IDENTITY(1,1) NOT NULL,  
[CourseID] [nvarchar](10) NOT NULL,  
[StudentID] [int] NOT NULL,  
[Grade] [decimal](3, 2) NOT NULL,  
 CONSTRAINT [PK_StudentGrade] PRIMARY KEY CLUSTERED   
(  
[EnrollmentID] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]  
  
GO  
  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
create view [dbo].[EnglishCourse]  
as  
select c.CourseID,c.Title,c.Credits,c.DepartmentID  
from Course as c join Department as d on c.DepartmentID=d.DepartmentID  
where d.Name=N'English'  
  
GO  
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1045', 2012, N'Calculus', 4, 7)  
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1061', 2012, N'Physics', 4, 1)  
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2021', 2012, N'Composition', 3, 2)  
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2042', 2012, N'Literature', 4, 2)  
SET IDENTITY_INSERT [dbo].[Department] ON   
  
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (1, N'Engineering', 350000.0000, CAST(0x0000999C00000000 AS DateTime), 2)  
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (2, N'English', 120000.0000, CAST(0x0000999C00000000 AS DateTime), 6)  
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (4, N'Economics', 200000.0000, CAST(0x0000999C00000000 AS DateTime), 4)  
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (7, N'Mathematics', 250024.0000, CAST(0x0000999C00000000 AS DateTime), 3)  
SET IDENTITY_INSERT [dbo].[Department] OFF  
SET IDENTITY_INSERT [dbo].[Person] ON   
  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (1, N'Hu', N'Nan', NULL, CAST(0x0000A0BF00000000 AS DateTime))  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (2, N'Norman', N'Laura', NULL, CAST(0x0000A0BF00000000 AS DateTime))  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (3, N'Olivotto', N'Nino', NULL, CAST(0x0000A0BF00000000 AS DateTime))  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (4, N'Anand', N'Arturo', NULL, CAST(0x0000A0BF00000000 AS DateTime))  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (5, N'Jai', N'Damien', NULL, CAST(0x0000A0BF00000000 AS DateTime))  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (6, N'Holt', N'Roger', CAST(0x000097F100000000 AS DateTime), NULL)  
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (7, N'Martin', N'Randall', CAST(0x00008B1A00000000 AS DateTime), NULL)  
SET IDENTITY_INSERT [dbo].[Person] OFF  
SET IDENTITY_INSERT [dbo].[StudentGrade] ON   
  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (1, N'C1045', 1, CAST(3.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (2, N'C1045', 2, CAST(3.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (3, N'C1045', 3, CAST(2.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (4, N'C1045', 4, CAST(4.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (5, N'C1045', 5, CAST(3.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (6, N'C1061', 1, CAST(4.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (7, N'C1061', 3, CAST(3.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (8, N'C1061', 4, CAST(2.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (9, N'C1061', 5, CAST(1.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (10, N'C2021', 1, CAST(2.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (11, N'C2021', 2, CAST(3.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (12, N'C2021', 4, CAST(3.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (13, N'C2021', 5, CAST(3.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (14, N'C2042', 1, CAST(2.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (15, N'C2042', 2, CAST(3.50 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (16, N'C2042', 3, CAST(4.00 AS Decimal(3, 2)))  
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (17, N'C2042', 5, CAST(3.00 AS Decimal(3, 2)))  
SET IDENTITY_INSERT [dbo].[StudentGrade] OFF  
ALTER TABLE [dbo].[Course]  WITH CHECK ADD  CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID])  
REFERENCES [dbo].[Department] ([DepartmentID])  
GO  
ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department]  
GO  
ALTER TABLE [dbo].[StudentGrade]  WITH CHECK ADD  CONSTRAINT [FK_StudentGrade_Student] FOREIGN KEY([StudentID])  
REFERENCES [dbo].[Person] ([PersonID])  
GO  
ALTER TABLE [dbo].[StudentGrade] CHECK CONSTRAINT [FK_StudentGrade_Student]  
GO  

Затем скомпилируйте и выполните следующее:Next, compile and execute the following:

using System;  
using System.Data;  
using System.Data.SqlClient;  
using System.Threading.Tasks;  
  
class Program {  
  
   static class SqlHelper {  
      // Set the connection, command, and then execute the command with non query.  
      public static Int32 ExecuteNonQuery(String connectionString, String commandText,  
          CommandType commandType, params SqlParameter[] parameters) {  
         using (SqlConnection conn = new SqlConnection(connectionString)) {  
            using (SqlCommand cmd = new SqlCommand(commandText, conn)) {  
               // There're three command types: StoredProcedure, Text, TableDirect. The TableDirect   
               // type is only for OLE DB.    
               cmd.CommandType = commandType;  
               cmd.Parameters.AddRange(parameters);  
  
               conn.Open();  
               return cmd.ExecuteNonQuery();  
            }  
         }  
      }  
  
      // Set the connection, command, and then execute the command and only return one value.  
      public static Object ExecuteScalar(String connectionString, String commandText,  
          CommandType commandType, params SqlParameter[] parameters) {  
         using (SqlConnection conn = new SqlConnection(connectionString)) {  
            using (SqlCommand cmd = new SqlCommand(commandText, conn)) {  
               cmd.CommandType = commandType;  
               cmd.Parameters.AddRange(parameters);  
  
               conn.Open();  
               return cmd.ExecuteScalar();  
            }  
         }  
      }  
  
      // Set the connection, command, and then execute the command with query and return the reader.  
      public static SqlDataReader ExecuteReader(String connectionString, String commandText,  
          CommandType commandType, params SqlParameter[] parameters) {  
         SqlConnection conn = new SqlConnection(connectionString);  
  
         using (SqlCommand cmd = new SqlCommand(commandText, conn)) {  
            cmd.CommandType = commandType;  
            cmd.Parameters.AddRange(parameters);  
  
            conn.Open();  
            // When using CommandBehavior.CloseConnection, the connection will be closed when the   
            // IDataReader is closed.  
            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  
            return reader;  
         }  
      }  
   }  
  
   static void Main(string[] args) {  
      String connectionString = "Data Source=(local);Initial Catalog=MySchool;Integrated Security=True;Asynchronous Processing=true;";  
  
      CountCourses(connectionString, 2012);  
      Console.WriteLine();  
  
      Console.WriteLine("Following result is the departments that started from 2007:");  
      GetDepartments(connectionString, 2007);  
      Console.WriteLine();  
  
      Console.WriteLine("Add the credits when the credits of course is lower than 4.");  
      AddCredits(connectionString, 4);  
      Console.WriteLine();  
  
      Console.WriteLine("Please press any key to exit...");  
      Console.ReadKey();  
   }  
  
   static void CountCourses(String connectionString, Int32 year) {  
      String commandText = "Select Count([CourseID]) FROM [MySchool].[dbo].[Course] Where Year=@Year";  
      SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);  
      parameterYear.Value = year;  
  
      Object oValue = SqlHelper.ExecuteScalar(connectionString, commandText, CommandType.Text, parameterYear);  
      Int32 count;  
      if (Int32.TryParse(oValue.ToString(), out count))  
         Console.WriteLine("There {0} {1} course{2} in {3}.", count > 1 ? "are" : "is", count, count > 1 ? "s" : null, year);  
   }  
  
   // Display the Departments that start from the specified year.  
   static void GetDepartments(String connectionString, Int32 year) {  
      String commandText = "dbo.GetDepartmentsOfSpecifiedYear";  
  
      // Specify the year of StartDate  
      SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);  
      parameterYear.Value = year;  
  
      // When the direction of parameter is set as Output, you can get the value after   
      // executing the command.  
      SqlParameter parameterBudget = new SqlParameter("@BudgetSum", SqlDbType.Money);  
      parameterBudget.Direction = ParameterDirection.Output;  
  
      using (SqlDataReader reader = SqlHelper.ExecuteReader(connectionString, commandText,  
          CommandType.StoredProcedure, parameterYear, parameterBudget)) {  
         Console.WriteLine("{0,-20}{1,-20}{2,-20}{3,-20}", "Name", "Budget", "StartDate",  
             "Administrator");  
         while (reader.Read()) {  
            Console.WriteLine("{0,-20}{1,-20:C}{2,-20:d}{3,-20}", reader["Name"],  
                reader["Budget"], reader["StartDate"], reader["Administrator"]);  
         }  
      }  
      Console.WriteLine("{0,-20}{1,-20:C}", "Sum:", parameterBudget.Value);  
   }  
  
   // If credits of course is lower than the certain value, the method will add the credits.  
   static void AddCredits(String connectionString, Int32 creditsLow) {  
      String commandText = "Update [MySchool].[dbo].[Course] Set Credits=Credits+1 Where Credits<@Credits";  
  
      SqlParameter parameterCredits = new SqlParameter("@Credits", creditsLow);  
  
      Int32 rows = SqlHelper.ExecuteNonQuery(connectionString, commandText, CommandType.Text, parameterCredits);  
  
      Console.WriteLine("{0} row{1} {2} updated.", rows, rows > 1 ? "s" : null, rows > 1 ? "are" : "is");  
   }  
}  

Комментарии

При создании экземпляра SqlCommand свойства чтения и записи устанавливаются в исходные значения.When an instance of SqlCommand is created, the read/write properties are set to their initial values. Список этих значений см. в конструкторе SqlCommand.For a list of these values, see the SqlCommand constructor.

SqlCommand содержит следующие методы для исполнения команд в SQL Server базе данных.SqlCommand features the following methods for executing commands at a SQL Server database:

ЭлементItem ОписаниеDescription
BeginExecuteNonQuery Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, описываемой этой SqlCommand, обычно выполняющей такие команды, как инструкции INSERT, DELETE, UPDATE и SET.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand, generally executing commands such as INSERT, DELETE, UPDATE, and SET statements. Каждый вызов BeginExecuteNonQuery должен быть связан с вызовом EndExecuteNonQuery, который завершает операцию, обычно в отдельном потоке.Each call to BeginExecuteNonQuery must be paired with a call to EndExecuteNonQuery which finishes the operation, typically on a separate thread.
BeginExecuteReader Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, описываемой этим SqlCommand, и получает от сервера один или несколько результирующих наборов.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand and retrieves one or more results sets from the server. Каждый вызов BeginExecuteReader должен быть связан с вызовом EndExecuteReader, который завершает операцию, обычно в отдельном потоке.Each call to BeginExecuteReader must be paired with a call to EndExecuteReader which finishes the operation, typically on a separate thread.
BeginExecuteXmlReader Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand. Каждый вызов BeginExecuteXmlReader должен быть связан с вызовом EndExecuteXmlReader, который завершает операцию, обычно в отдельном потоке и возвращает объект XmlReader.Each call to BeginExecuteXmlReader must be paired with a call to EndExecuteXmlReader, which finishes the operation, typically on a separate thread, and returns an XmlReader object.
ExecuteReader Выполняет команды, возвращающие строки.Executes commands that return rows. Для повышения производительности ExecuteReader вызывает команды с помощью системной хранимой процедуры Transact-SQL sp_executesql.For increased performance, ExecuteReader invokes commands using the Transact-SQL sp_executesql system stored procedure. Таким образом, ExecuteReader может не иметь желаемого результата, если он используется для выполнения таких команд, как инструкции Transact-SQL SET.Therefore, ExecuteReader might not have the effect that you want if used to execute commands such as Transact-SQL SET statements.
ExecuteNonQuery Выполняет такие команды, как инструкции Transact-SQL INSERT, DELETE, UPDATE и SET.Executes commands such as Transact-SQL INSERT, DELETE, UPDATE, and SET statements.
ExecuteScalar Извлекает одно значение (например, статистическое значение) из базы данных.Retrieves a single value (for example, an aggregate value) from a database.
ExecuteXmlReader Отправляет CommandText в Connection и строит объект XmlReader.Sends the CommandText to the Connection and builds an XmlReader object.

Можно сбросить свойство CommandText и повторно использовать объект SqlCommand.You can reset the CommandText property and reuse the SqlCommand object. Однако необходимо закрыть SqlDataReader, прежде чем можно будет выполнить новую или предыдущую команду.However, you must close the SqlDataReader before you can execute a new or previous command.

Если SqlException создается методом, выполняющим SqlCommand, SqlConnection остается открытым, если уровень серьезности не равен 19 или меньше.If a SqlException is generated by the method executing a SqlCommand, the SqlConnection remains open when the severity level is 19 or less. Если уровень серьезности равен 20 или больше, сервер обычно закрывает SqlConnection.When the severity level is 20 or greater, the server ordinarily closes the SqlConnection. Тем не менее, пользователь может опять открыть подключение и продолжить работу.However, the user can reopen the connection and continue.

Примечание

Без имени, также называемого порядковым номером, параметры не поддерживаются поставщиком данных .NET Framework для SQL Server.Nameless, also called ordinal, parameters are not supported by the .NET Framework Data Provider for SQL Server.

Конструкторы

SqlCommand()

Инициализирует новый экземпляр класса SqlCommand.Initializes a new instance of the SqlCommand class.

SqlCommand(String)

Инициализирует новый экземпляр класса SqlCommand текстом запроса.Initializes a new instance of the SqlCommand class with the text of the query.

SqlCommand(String, SqlConnection)

Инициализирует новый экземпляр класса SqlCommand текстом запроса и подключением SqlConnection.Initializes a new instance of the SqlCommand class with the text of the query and a SqlConnection.

SqlCommand(String, SqlConnection, SqlTransaction)

Инициализирует новый экземпляр класса SqlCommand текстом запроса, подключением SqlConnection и транзакцией SqlTransaction.Initializes a new instance of the SqlCommand class with the text of the query, a SqlConnection, and the SqlTransaction.

SqlCommand(String, SqlConnection, SqlTransaction, SqlCommandColumnEncryptionSetting)

Инициализирует новый экземпляр класса SqlCommand с заданными текстом команды, подключением, транзакцией и параметром шифрования.Initializes a new instance of the SqlCommand class with specified command text, connection, transaction, and encryption setting.

Свойства

CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Унаследовано от Component)
ColumnEncryptionSetting

Возвращает или задает параметр шифрования столбца для этой команды.Gets or sets the column encryption setting for this command.

CommandText

Возвращает или задает инструкцию Transact-SQL, имя таблицы или хранимую процедуру, выполняемую для источника данных.Gets or sets the Transact-SQL statement, table name or stored procedure to execute at the data source.

CommandTimeout

Возвращает или задает время ожидания (в секундах) перед прекращением попытки выполнить команду и выводом ошибки.Gets or sets the wait time (in seconds) before terminating the attempt to execute a command and generating an error.

CommandType

Возвращает или задает значение, определяющее, как будет интерпретироваться свойство CommandText.Gets or sets a value indicating how the CommandText property is to be interpreted.

Connection

Возвращает или задает объект SqlConnection, используемый этим экземпляром класса SqlCommand.Gets or sets the SqlConnection used by this instance of the SqlCommand.

Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Унаследовано от Component)
DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Унаследовано от Component)
DesignTimeVisible

Возвращает или задает значение, указывающее, будет ли объект команды видимым в элементе управления Windows Forms Designer.Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control.

Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Унаследовано от Component)
Notification

Получает или задает значение, указывающее объект SqlNotificationRequest, связанный с данной командой.Gets or sets a value that specifies the SqlNotificationRequest object bound to this command.

NotificationAutoEnlist

Возвращает или задает значение, указывающее, должно ли приложение автоматически получать уведомления о запросах от общего объекта SqlDependency.Gets or sets a value indicating whether the application should automatically receive query notifications from a common SqlDependency object.

Parameters

Возвращает набор SqlParameterCollection.Gets the SqlParameterCollection.

Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Унаследовано от Component)
Transaction

Возвращает или задает транзакцию SqlTransaction, в которой выполняется команда SqlCommand.Gets or sets the SqlTransaction within which the SqlCommand executes.

UpdatedRowSource

Возвращает или задает способ применения результатов команды к объекту DataRow при использовании метода Update объекта DbDataAdapter.Gets or sets how command results are applied to the DataRow when used by the Update method of the DbDataAdapter.

Методы

BeginExecuteNonQuery()

Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand.

BeginExecuteNonQuery(AsyncCallback, Object)

Инициализирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand, получая процедуру обратного вызова и данные о состоянии.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand, given a callback procedure and state information.

BeginExecuteReader()

Инициирует асинхронное выполнение инструкции или хранимой процедуры Transact-SQL, описанной в данном объекте SqlCommand, и получает от сервера один или несколько результирующих наборов.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand, and retrieves one or more result sets from the server.

BeginExecuteReader(AsyncCallback, Object)

Инициализирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand, и получает от сервера один или более результирующих наборов при наличии процедуры обратного вызова и сведений о состоянии.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand and retrieves one or more result sets from the server, given a callback procedure and state information.

BeginExecuteReader(AsyncCallback, Object, CommandBehavior)

Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand, используя одно из значений CommandBehavior, и получает от сервера один или более результирующих наборов; принимает процедуру обратного вызова и информацию о состоянии.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand, using one of the CommandBehavior values, and retrieving one or more result sets from the server, given a callback procedure and state information.

BeginExecuteReader(CommandBehavior)

Инициализирует асинхронное выполнение инструкции или хранимой процедуры Transact-SQL, описанной в данном объекте SqlCommand, с использованием одного из значений CommandBehavior.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand using one of the CommandBehavior values.

BeginExecuteXmlReader()

Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand, и возвращает результаты в виде объекта XmlReader.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand and returns results as an XmlReader object.

BeginExecuteXmlReader(AsyncCallback, Object)

Инициирует асинхронное выполнение инструкции Transact-SQL или хранимой процедуры, определенной в данном объекте SqlCommand, и возвращает результаты в виде объекта XmlReader, используя процедуру обратного вызова.Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this SqlCommand and returns results as an XmlReader object, using a callback procedure.

Cancel()

Пытается отменить выполнение SqlCommand.Tries to cancel the execution of a SqlCommand.

Clone()

Создает новый объект SqlCommand, являющийся копией текущего экземпляра.Creates a new SqlCommand object that is a copy of the current instance.

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
CreateParameter()

Создает новый экземпляр объекта SqlParameter.Creates a new instance of a SqlParameter object.

Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Унаследовано от Component)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Унаследовано от Component)
EndExecuteNonQuery(IAsyncResult)

Завершает асинхронное выполнение инструкции Transact-SQL.Finishes asynchronous execution of a Transact-SQL statement.

EndExecuteReader(IAsyncResult)

Завершает асинхронное выполнение инструкции Transact-SQL, возвращающей запрошенный SqlDataReader.Finishes asynchronous execution of a Transact-SQL statement, returning the requested SqlDataReader.

EndExecuteXmlReader(IAsyncResult)

Завершает асинхронное выполнение инструкции Transact-SQL, возвращающей запрошенные данные в виде XML.Finishes asynchronous execution of a Transact-SQL statement, returning the requested data as XML.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
ExecuteNonQuery()

Выполняет для подключения инструкцию Transact-SQL и возвращает количество задействованных в инструкции строк.Executes a Transact-SQL statement against the connection and returns the number of rows affected.

ExecuteNonQueryAsync(CancellationToken)

Асинхронная версия ExecuteNonQuery(), которая выполняет инструкцию Transact-SQLTransact-SQL для подключения и возвращает количество затронутых строк.An asynchronous version of ExecuteNonQuery(), which executes a Transact-SQLTransact-SQL statement against the connection and returns the number of rows affected. Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteReader()

Отправляет CommandText в Connection и строит SqlDataReader.Sends the CommandText to the Connection and builds a SqlDataReader.

ExecuteReader(CommandBehavior)

Отправляет CommandText в Connection и формирует SqlDataReader с помощью одного из значений CommandBehavior.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

ExecuteReaderAsync()

Асинхронная версия ExecuteReader(), которая отправляет CommandText в Connection и создает SqlDataReader.An asynchronous version of ExecuteReader(), which sends the CommandText to the Connection and builds a SqlDataReader. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteReaderAsync(CancellationToken)

Асинхронная версия ExecuteReader(), которая отправляет CommandText в Connection и создает SqlDataReader.An asynchronous version of ExecuteReader(), which sends the CommandText to the Connection and builds a SqlDataReader.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteReaderAsync(CommandBehavior)

Асинхронная версия ExecuteReader(CommandBehavior), которая отправляет CommandText в Connection и создает SqlDataReader.An asynchronous version of ExecuteReader(CommandBehavior), which sends the CommandText to the Connection, and builds a SqlDataReader. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteReaderAsync(CommandBehavior, CancellationToken)

Асинхронная версия ExecuteReader(CommandBehavior), которая отправляет CommandText в Connection и создает SqlDataReader.An asynchronous version of ExecuteReader(CommandBehavior), which sends the CommandText to the Connection, and builds a SqlDataReader

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteScalar()

Выполняет запрос и возвращает первый столбец первой строки результирующего набора, возвращаемого запросом.Executes the query, and returns the first column of the first row in the result set returned by the query. Дополнительные столбцы или строки не обрабатываются.Additional columns or rows are ignored.

ExecuteScalarAsync(CancellationToken)

Асинхронная версия метода ExecuteScalar(), которая выполняет запрос асинхронно и возвращает первый столбец первой строки в наборе результатов, возвращаемых запросом.An asynchronous version of ExecuteScalar(), which executes the query asynchronously and returns the first column of the first row in the result set returned by the query. Дополнительные столбцы или строки не обрабатываются.Additional columns or rows are ignored.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteXmlReader()

Отправляет CommandText в Connection и строит объект XmlReader.Sends the CommandText to the Connection and builds an XmlReader object.

ExecuteXmlReaderAsync()

Асинхронная версия ExecuteXmlReader(), которая отправляет CommandText в Connection и создает объект XmlReader.An asynchronous version of ExecuteXmlReader(), which sends the CommandText to the Connection and builds an XmlReader object.

Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ExecuteXmlReaderAsync(CancellationToken)

Асинхронная версия ExecuteXmlReader(), которая отправляет CommandText в Connection и создает объект XmlReader.An asynchronous version of ExecuteXmlReader(), which sends the CommandText to the Connection and builds an XmlReader object.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetService(Type)

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container.Returns an object that represents a service provided by the Component or by its Container.

(Унаследовано от Component)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
Prepare()

Создает подготовленную версию команды на экземпляре SQL Server.Creates a prepared version of the command on an instance of SQL Server.

ResetCommandTimeout()

Восстанавливает значение по умолчанию свойства CommandTimeout.Resets the CommandTimeout property to its default value.

ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Унаследовано от Component)

События

Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Унаследовано от Component)
StatementCompleted

Генерируется по завершении выполнения инструкции Transact-SQL.Occurs when the execution of a Transact-SQL statement completes.

Явные реализации интерфейса

ICloneable.Clone()

Создает новый объект SqlCommand, являющийся копией текущего экземпляра.Creates a new SqlCommand object that is a copy of the current instance.

IDbCommand.CreateParameter()

Создает новый экземпляр объекта SqlParameter.Creates a new instance of a SqlParameter object.

IDbCommand.ExecuteReader()

Отправляет свойство CommandText свойству Connection и создает SqlDataReader.Sends the CommandText to the Connection, and builds a SqlDataReader.

IDbCommand.ExecuteReader(CommandBehavior)

Отправляет CommandText в Connection и формирует SqlDataReader с помощью одного из значений CommandBehavior.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

Применяется к

Дополнительно