共用方式為


SqlCommand 類別

定義

表示要對 SQL Server 資料庫執行的 Transact-SQL 陳述式或預存程序。 此類別無法獲得繼承。

public ref class SqlCommand sealed : System::Data::Common::DbCommand, ICloneable
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable
type SqlCommand = class
    inherit DbCommand
    interface ICloneable
Public NotInheritable Class SqlCommand
Inherits DbCommand
Implements ICloneable
繼承
SqlCommand
實作

範例

下列範例會建立 SqlConnectionSqlCommand 、 和 SqlDataReader 。 此範例會讀取資料,並將其寫入主控台。 最後,範例會關閉 SqlDataReader ,然後在 SqlConnection 結束程式碼區塊時關閉 Using

using System;
using System.Data;
using Microsoft.Data.SqlClient;


namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            ReadOrderData(str);

        }

        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]));
                    }
                }
            }
        }

下列範例示範如何建立和執行不同類型的 SqlCommand 物件。

首先,您必須執行下列腳本來建立範例資料庫:

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

接下來,編譯並執行下列專案:

using System;
using System.Data;
using Microsoft.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;";

        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 實例時,讀取/寫入屬性會設定為其初始值。 如需這些值的清單,請參閱建 SqlCommand 構函式。

SqlCommand具有下列方法,可在SQL Server資料庫上執行命令:

Item 說明
BeginExecuteNonQuery 起始這個 所 SqlCommand 描述之 Transact-SQL 語句或預存程式的非同步執行,通常會執行 INSERT、DELETE、UPDATE 和 SET 語句等命令。 每個 呼叫 BeginExecuteNonQuery 都必須與完成作業的呼叫 EndExecuteNonQuery 配對,通常是在不同的執行緒上。
BeginExecuteReader 起始 Transact-SQL 語句或預存程式的非同步執行,此語句或預存程式由這個 SqlCommand 所描述,並從伺服器擷取一或多個結果集。 每個 呼叫 BeginExecuteReader 都必須與完成作業的呼叫 EndExecuteReader 配對,通常是在不同的執行緒上。
BeginExecuteXmlReader 起始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行。 對 的每個呼叫 BeginExecuteXmlReader 都必須與 的 EndExecuteXmlReader 呼叫配對,該呼叫會完成作業,通常是在不同的執行緒上,並傳回 XmlReader 物件。
ExecuteReader 執行傳回資料列的命令。 為了提升效能, ExecuteReader 請使用 Transact-SQL sp_executesql 系統預存程式叫用命令。 因此, ExecuteReader 如果用來執行 Transact-SQL SET 語句之類的命令,可能沒有您想要的效果。
ExecuteNonQuery 執行 Transact-SQL INSERT、DELETE、UPDATE 和 SET 語句等命令。
ExecuteScalar 例如,從資料庫擷取單一值 (匯總值) 。
ExecuteXmlReader CommandText 傳送至 Connection 並建置 XmlReader 物件。

您可以重設 CommandText 屬性並重複使用 SqlCommand 物件。 不過,您必須先關閉 , SqlDataReader 才能執行新的或先前的命令。

SqlException如果 由執行 SqlCommand 的 方法產生 ,當嚴重性層級為 19 或更少時,仍 SqlConnection 會保持開啟狀態。 當嚴重性層級為 20 或更新時,伺服器通常會關閉 SqlConnection 。 但是,使用者可以再次開啟連線,然後繼續進行。

注意

.NET Framework Data Provider for SQL Server不支援無名稱,也稱為序數參數。

建構函式

SqlCommand()

初始化 SqlCommand 類別的新執行個體。

SqlCommand(String)

使用查詢的文字,初始化 SqlCommand 類別的新執行個體。

SqlCommand(String, SqlConnection)

使用查詢 SqlConnection 和 的文字,初始化 類別的新實例 SqlCommand

SqlCommand(String, SqlConnection, SqlTransaction)

使用查詢 SqlConnection 、、 和 SqlTransaction 的文字, SqlCommand 初始化 類別的新實例。

SqlCommand(String, SqlConnection, SqlTransaction, SqlCommandColumnEncryptionSetting)

使用指定的命令文字、連接、交易和加密設定,初始化 SqlCommand 類別的新執行個體。

屬性

ColumnEncryptionSetting

取得此命令的資料行加密設定。

CommandText

取得或設定要在資料來源執行的 Transact-SQL 陳述式、資料表名稱或預存程序。

CommandTimeout

取得或設定結束執行命令的嘗試並產生錯誤之前的等待時間 (以秒為單位)。 預設值為 30 秒。

CommandType

取得或設定值,其表示解譯 CommandText 屬性的方式。

Connection

取得或設定 SqlConnection 這個 實例 SqlCommand 所使用的 。

DesignTimeVisible

取得或設定值,指出命令物件是否應該在 Windows Form 設計工具控制項中顯示。

EnableOptimizedParameterBinding

取得或設定值,指出命令物件在將命令提交至SQL Server時,是否應該停用 Output 和 InputOutput 指示來優化參數效能。

Notification

取得或設定值,其指定繫結至這個命令的 SqlNotificationRequest 物件。

NotificationAutoEnlist

取得或設定值,指出應用程式是否應該從通用 SqlDependency 物件自動接收查詢通知。

Parameters

SqlParameterCollection取得 。

RetryLogicProvider

取得或設定值,其指定繫結至這個命令的 SqlRetryLogicBaseProvider 物件。

Transaction

取得或設定在其中執行 SqlTransactionSqlCommand

UpdatedRowSource

取得或設定當由 DbDataAdapterUpdate 方法使用命令結果時,如何套用至 DataRow

方法

BeginExecuteNonQuery()

起始這個 SqlCommand 所描述之 Transact-SQL 語句或預存程式的非同步執行。

BeginExecuteNonQuery(AsyncCallback, Object)

根據回呼程式和狀態資訊,起始這個 所 SqlCommand 描述之 Transact-SQL 語句或預存程式的非同步執行。

BeginExecuteReader()

啟始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行,並傳回結果做為 XmlReader 物件。

BeginExecuteReader(AsyncCallback, Object)

使用回呼程序,啟始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行,並傳回結果做為 XmlReader 物件。

BeginExecuteReader(AsyncCallback, Object, CommandBehavior)

使用其中一個 ,起始這個 SqlCommand 所描述之 Transact-SQL 語句或預存程式的非同步執行CommandBehavior 值,並在回呼程式和狀態資訊的情況下,從伺服器擷取一或多個結果集。

BeginExecuteReader(CommandBehavior)

藉由使用其中一個 CommandBehavior 值,起始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行。

BeginExecuteXmlReader()

啟始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行,並傳回結果做為 XmlReader 物件。

BeginExecuteXmlReader(AsyncCallback, Object)

使用回呼程序,啟始這個 SqlCommand 所描述之 Transact-SQL 陳述式或預存程序的非同步執行,並傳回結果做為 XmlReader 物件。

Cancel()

嘗試取消 的執行 SqlCommand

Clone()

建立新的 SqlCommand 物件,這個物件是目前執行個體的複本。

CreateParameter()

建立 SqlParameter 物件的新執行個體。

EndExecuteNonQuery(IAsyncResult)

完成 Transact-SQL 陳述式的非同步執行。

EndExecuteReader(IAsyncResult)

完成 Transact-SQL 語句的非同步執行,並傳回要求的 SqlDataReader

EndExecuteXmlReader(IAsyncResult)

完成 Transact-SQL 陳述式的非同步執行,以 XML 傳回要求的資料。

ExecuteNonQuery()

針對連接執行 Transact-SQL 陳述式,並傳回受影響的資料列數目。

ExecuteNonQueryAsync(CancellationToken)

的非同步版本 ExecuteNonQuery() ,它會針對連接執行 Transact-SQL 語句,並傳回受影響的資料列數目。 取消語彙基元可用於要求在命令逾時之前捨棄作業。 例外狀況將經由傳回的 Task 物件回報。

ExecuteReader()

CommandText將 傳送至 Connection ,並建置 SqlDataReader

ExecuteReader(CommandBehavior)

CommandText將 傳送至 Connection ,並使用其中 CommandBehavior 一個值來建置 SqlDataReader

ExecuteReaderAsync()

的非同步版本 ExecuteReader() ,它會將 傳送 CommandTextConnection 並建置 SqlDataReader 。 例外狀況將經由傳回的 Task 物件回報。

ExecuteReaderAsync(CancellationToken)

的非同步版本 ExecuteReader() ,它會將 傳送 CommandTextConnection 並建置 SqlDataReader

取消語彙基元可用於要求在命令逾時之前捨棄作業。 例外狀況將經由傳回的 Task 物件回報。

ExecuteReaderAsync(CommandBehavior)

的非同步版本 ExecuteReader(CommandBehavior) ,它會將 傳送 CommandTextConnection ,並建置 SqlDataReader 。 例外狀況將經由傳回的 Task 物件回報。

ExecuteReaderAsync(CommandBehavior, CancellationToken)

的非同步版本 ExecuteReader(CommandBehavior) ,它會將 傳送 CommandTextConnection ,並建 SqlDataReader 置取消權杖,以要求在命令逾時之前放棄作業。 例外狀況將經由傳回的 Task 物件回報。

ExecuteScalar()

執行查詢,並傳回查詢所傳回之結果集中第一個資料列的第一個資料行。 忽略其他資料行或資料列。

ExecuteScalarAsync(CancellationToken)

的非同步版本 ExecuteScalar() ,它會以非同步方式執行查詢,並傳回查詢所傳回之結果集中第一個資料列的第一個資料行。 忽略其他資料行或資料列。

取消語彙基元可用於要求在命令逾時之前捨棄作業。 例外狀況將經由傳回的 Task 物件回報。

ExecuteXmlReader()

CommandText 傳送至 Connection 並建置 XmlReader 物件。

ExecuteXmlReaderAsync()

的非同步版本 ExecuteXmlReader() ,它會將 傳送 CommandTextConnection 並建置 XmlReader 物件。

例外狀況將經由傳回的 Task 物件回報。

ExecuteXmlReaderAsync(CancellationToken)

的非同步版本 ExecuteXmlReader() ,它會將 傳送 CommandTextConnection 並建置 XmlReader 物件。

取消語彙基元可用於要求在命令逾時之前捨棄作業。 例外狀況將經由傳回的 Task 物件回報。

Prepare()

在 SQL Server 的執行個體上建立命令的預備版本。

RegisterColumnEncryptionKeyStoreProvidersOnCommand(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

在 實例上 SqlCommand 註冊加密金鑰存放區提供者。 如果已呼叫此函式,則會忽略使用 RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) 方法註冊的任何提供者。 這個函式可以多次呼叫。 這會進行字典的淺層複製,讓應用程式在設定自訂提供者清單之後無法改變。

ResetCommandTimeout()

重設 CommandTimeout 屬性為其預設值。

事件

StatementCompleted

發生於 Transact-SQL 陳述式執行完畢時。

明確介面實作

ICloneable.Clone()

表示要對 SQL Server 資料庫執行的 Transact-SQL 陳述式或預存程序。 此類別無法獲得繼承。

適用於