語言

SqlBatch 類別

定義

public ref class SqlBatch : IAsyncDisposable, IDisposable
public ref class SqlBatch : System::Data::Common::DbBatch
public class SqlBatch : IAsyncDisposable, IDisposable
public class SqlBatch : System.Data.Common.DbBatch
type SqlBatch = class
    interface IDisposable
    interface IAsyncDisposable
type SqlBatch = class
    inherit DbBatch
Public Class SqlBatch
Implements IAsyncDisposable, IDisposable
Public Class SqlBatch
Inherits DbBatch
繼承
SqlBatch
繼承
SqlBatch
實作

範例

以下範例會產生 a SqlConnection 和 SqlBatch,然後將多個 SqlBatchCommand 物件加入批次。 接著執行批次,產生 SqlDataReader。 範例會讀取批次指令的結果,並將其寫入主控台。 最後,範例會關閉 , SqlDataReader 然後關閉 , SqlConnection 因為 using 區塊會從範圍中消失。

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
        + "Integrated Security=SSPI;Encrypt=False";
        RunBatch(str);
    }

    static void RunBatch(string connString)
    {
        using var connection = new SqlConnection(connString);
        connection.Open();

        using var batch = new SqlBatch(connection);

        const int count = 10;
        const string parameterName = "parameter";
        for (int i = 0; i < count; i++)
        {
            var batchCommand = new SqlBatchCommand($"SELECT @{parameterName} as value");
            batchCommand.Parameters.Add(new SqlParameter(parameterName, i));
            batch.BatchCommands.Add(batchCommand);
        }

        var results = new List<int>(count);
        using (SqlDataReader reader = batch.ExecuteReader())
        {
            do
            {
                while (reader.Read())
                {
                    results.Add(reader.GetFieldValue<int>(0));
                }
            } while (reader.NextResult());
        }
        Console.WriteLine(string.Join(", ", results));
    }
}

以下範例會產生 a SqlConnection 和 SqlBatch,然後將多個 SqlBatchCommand 物件加入批次。 接著執行批次,產生 SqlDataReader。 範例會讀取批次指令的結果,並將其寫入主控台。 最後,範例會關閉 , SqlDataReader 然後關閉 , SqlConnection 因為 using 區塊會從範圍中消失。

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
                   + "Integrated Security=SSPI;Encrypt=False";
        RunBatch(str);
    }

    static void RunBatch(string connString)
    {
        using var connection = new SqlConnection(connString);
        connection.Open();

        using var batch = new SqlBatch(connection);

        const int count = 10;
        const string parameterName = "parameter";
        for (int i = 0; i < count; i++)
        {
            var batchCommand = new SqlBatchCommand($"SELECT @{parameterName} as value");
            batchCommand.Parameters.Add(new SqlParameter(parameterName, i));
            batch.BatchCommands.Add(batchCommand);
        }

        var results = new List<int>(count);
        using (SqlDataReader reader = batch.ExecuteReader())
        {
            do
            {
                while (reader.Read())
                {
                    results.Add(reader.GetFieldValue<int>(0));
                }
            } while (reader.NextResult());
        }
        Console.WriteLine(string.Join(", ", results));
    }
}

建構函式

名稱 Description
SqlBatch()

初始化一個新的 SqlBatch。

SqlBatch(SqlConnection, SqlTransaction)

初始化一個新的 SqlBatch。

屬性

名稱 Description
BatchCommands

批次 SqlBatchCommandCollection中包含的指令清單。

Commands

批次List<T>中包含的 清單SqlBatchCommand。

Connection

取得或設定 SqlConnection 此實例 SqlBatch所使用的。

DbBatchCommands

取得物品集合 SqlBatchCommand 。

DbConnection

得到或設定 由 DbConnection 所使用 SqlBatch。

DbTransaction

取得或設定該SqlTransaction物件執行的內部。SqlBatch

Timeout

在終止執行批次並產生錯誤前,取得或設定等待時間(以秒為單位)。

Transaction

取得或設定指令執行的內部SqlBatch空間SqlTransaction。

方法

名稱 Description
Cancel()

嘗試取消 SqlBatch執行 。

CreateDbBatchCommand()

建立一個新的物件實例 SqlBatchCommand 。

Dispose()

執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。

DisposeAsync()

以異步方式執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。

ExecuteDbDataReader(CommandBehavior)

會對其連線執行批次,回傳 a SqlDataReader 可用來存取結果。

ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken)

此實作會呼叫該 ExecuteReaderAsync() 方法並回傳已完成的任務。 預設實作若傳遞已取消的取消標記,會回傳已取消的任務。 此方法接受取消令牌,可用來要求提前取消作業。

ExecuteNonQuery()

會對其連接物件執行批次,並回傳所有批次指令中受影響的總列數。

ExecuteNonQueryAsync(CancellationToken)

這是非同步版本的 ExecuteNonQuery()。 實作會呼叫該 ExecuteNonQueryAsync(CancellationToken) 方法並回傳已完成的任務。 預設實作若傳遞已取消的取消標記,會回傳已取消的任務。 在回傳任務完成前,不要呼叫物件的其他 DbCommand 方法和屬性。

ExecuteReader()

將 Commands 傳送到 並 Connection 建立 SqlDataReader。

ExecuteReader(CommandBehavior)

將 Commands 傳送到 並 Connection 建立 SqlDataReader。

ExecuteReaderAsync(CancellationToken)

一個非同步版本的 ExecuteReader(),將 傳送 Commands 到 並 Connection 建 SqlDataReader構 。 例外將透過回傳的任務物件回報。

ExecuteReaderAsync(CommandBehavior, CancellationToken)

一個非同步版本的 ExecuteReader(),將 傳送 Commands 到 並 Connection 建 SqlDataReader構 。 例外將透過回傳的任務物件回報。

ExecuteScalar()

執行批次並回傳第一個回傳結果集第一列的第一欄。 其他欄位、列和結果集則被忽略。

ExecuteScalarAsync(CancellationToken)

非同步版本 ExecuteScalar()的 ,執行批次並回傳第一個回傳結果集第一列的第一欄。 會忽略所有其他數據行、數據列和結果集。

Prepare()

在資料來源上建立批次或每個指令的已準備好(或編譯)版本。

PrepareAsync(CancellationToken)

非同步地在資料來源上建立批次或每個指令的預備(或編譯)版本。

適用於