加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 如何将数据从SQL Server提取到SqlDataReader工作?

发布时间:2020-12-12 16:36:11 所属栏目:MsSql教程 来源:网络整理
导读:当我打电话给这个代码: using (var connection = new SqlConnection(connectionString)){ var command = new SqlCommand("SELECT * FROM Table",connection); connection.Open(); using (var reader = command.ExecuteReader()) { while(reader.Read()) { //
当我打电话给这个代码:
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("SELECT * FROM Table",connection);
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while(reader.Read())
        {
            // Do something here
        }
    }
}

内部发生什么这在网络层面如何工作?它会为每次调用Read或者是在内部执行任何批量读取来创建数据库的新的往返行程吗?

我在问,因为我只是读ODP.NET在OracleCommand和OracleDataReader中提供了FetchSize属性,我明白为定义每一次往返数据库应该预先载入多少条记录.我不知道SQL Server是否以类似的方式工作,如果有一些类似的行为可以在某个地方进行配置.我在SqlCommand,SqlDataReader或CommandBehavior中没有找到任何这样的配置.

解决方法

数据从sql server流传输到SqlConnection.PacketSize属性大小的数据包中的客户端.如果您的客户端无法快速读取结果,网卡上的缓冲区将被填满,协议会检测到这一点,并停止接收,从而使得sql server的网卡发送缓冲区已满,并停止发送任何和所有数据.如果你想下到protocl级别,然后查看 TDS protcol.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读