如何使用客户端游标SqlConnection/SqlDataReader?

l33*_*33t 0 c# sql-server sql-server-2014

我有一个SQL Server 2014实例和一个用C#编写的客户端应用程序.

从这个应用程序,我使用下面的代码检索数据.使用一些经验测试,似乎正在使用服务器端游标.对于我的特定用例,我想使用客户端游标.如何才能做到这一点?

如何使用客户端游标进行连接?

<connectionStrings>
   <clear/>
   <add name="myDB" 
        connectionString="Server=SERVER\INSTANCE;Database=test"
        providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

C#客户端代码:

using (var connection = OpenConnection())
{
    using (var command = connection.CreateCommand())
    {
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "dbo.my_stored_procedure";

        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                object retrievedObject = reader.GetValue(0);
                // Use object...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有用的链接:

Mic*_*ski 5

在旧的ADO中CursorLocationEnum,允许用户选择是否应使用客户端或服务器端游标.ADO.NET以不同的方式工作.ADO.NET Datareader相当于服务器端游标,它不能用作客户端游标.

我对客户端游标的理解是,在首先将所有数据下载到客户端然后进行处理时使用它.这意味着在初始获取数据之后,不会向服务器发送其他请求.如果我是对的,这意味着ADO.NET DataSet相当于ADO.NET中的客户端游标.它是一个脱机/断开连接的数据结构,可以使用DataAdapter填充.这篇文章也很有用.