语言

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
实现

示例

以下示例创建一个和一个SqlConnectionSqlBatch,然后将多个SqlBatchCommand对象添加到批处理。 然后,它会执行批处理,并创建一个 SqlDataReader。 该示例读取批处理命令的结果,并将其写入控制台。 最后,该示例关闭该示例,然后SqlConnection关闭SqlDataReader块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));
    }
}

以下示例创建一个和一个SqlConnectionSqlBatch,然后将多个SqlBatchCommand对象添加到批处理。 然后,它会执行批处理,并创建一个 SqlDataReader。 该示例读取批处理命令的结果,并将其写入控制台。 最后,该示例关闭该示例,然后SqlConnection关闭SqlDataReader块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));
    }
}

构造函数

名称 说明
SqlBatch()

初始化新的 SqlBatch。

SqlBatch(SqlConnection, SqlTransaction)

初始化新的 SqlBatch。

属性

名称 说明
BatchCommands

批处理 SqlBatchCommandCollection中包含的命令列表。

Commands

批处理中包含的List<T>列表SqlBatchCommand。

Connection

获取或设置 SqlConnection 此实例 SqlBatch所使用的 。

DbBatchCommands

获取对象集合 SqlBatchCommand 。

DbConnection

获取或设置 DbConnection 由此 SqlBatch使用的 。

DbTransaction

获取或设置 SqlTransaction 此 SqlBatch 对象在其中执行的对象。

Timeout

获取或设置等待时间(以秒为单位),然后终止尝试执行批处理并生成错误。

Transaction

获取或设置 SqlTransaction 命令的执行范围 SqlBatch 。

方法

名称 说明
Cancel()

尝试取消执行 。SqlBatch

CreateDbBatchCommand()

创建对象的新 SqlBatchCommand 实例。

Dispose()

执行与释放、释放或重置非托管资源关联的应用程序定义任务。

DisposeAsync()

以异步方式执行与释放、释放或重置非托管资源关联的应用程序定义任务。

ExecuteDbDataReader(CommandBehavior)

针对其连接执行批处理,返回 SqlDataReader 可用于访问结果的批处理。

ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken)

此实现调用 ExecuteReaderAsync() 该方法并返回已完成的任务。 如果传递已取消的取消令牌,则默认实现将返回已取消的任务。 此方法接受一个取消令牌,该令牌可用于请求提前取消操作。

ExecuteNonQuery()

对其连接对象执行批处理,返回所有批处理命令中受影响的行总数。

ExecuteNonQueryAsync(CancellationToken)

这是 .的 ExecuteNonQuery()异步版本。 实现调用 ExecuteNonQueryAsync(CancellationToken) 该方法并返回已完成的任务。 如果传递已取消的取消令牌,则默认实现将返回已取消的任务。 在返回的任务完成之前,请勿调用对象的其他方法和属性 DbCommand 。

ExecuteReader()

将 Commands 它发送到 Connection 并生成一个 SqlDataReader。

ExecuteReader(CommandBehavior)

将 Commands 它发送到 Connection 并生成一个 SqlDataReader。

ExecuteReaderAsync(CancellationToken)

的异步版本ExecuteReader(),用于将它发送到CommandsConnection并生成一个 SqlDataReader。 异常将通过返回的任务对象报告。

ExecuteReaderAsync(CommandBehavior, CancellationToken)

的异步版本ExecuteReader(),用于将它发送到CommandsConnection并生成一个 SqlDataReader。 异常将通过返回的任务对象报告。

ExecuteScalar()

执行批处理,并返回第一个返回的结果集中第一行的第一列。 将忽略所有其他列、行和结果集。

ExecuteScalarAsync(CancellationToken)

异步版本,该版本 ExecuteScalar()执行批处理,并返回第一个返回的结果集中第一行的第一列。 将忽略所有其他列、行和结果集。

Prepare()

在数据源上创建批处理的已准备(或已编译)版本或其每个命令。

PrepareAsync(CancellationToken)

在数据源上异步创建批处理(或已编译)版本的批处理或其每个命令。

适用于