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

c# – ADO.Net DataReader超时问题

发布时间:2020-12-15 08:30:37 所属栏目:百科 来源:网络整理
导读:我正在使用ADO.Net C#VSTS 2008 ADO.Net连接到SQL Server 2008 Enterprise.我使用的是几乎相同的模式/示例 – 使用ADO.Net DataReader通过一个条目(行)检索一个条目(行)的数据. http://msdn.microsoft.com/en-us/library/haa3afyz.aspx 我的问题是,如果我在
我正在使用ADO.Net C#VSTS 2008 ADO.Net连接到SQL Server 2008 Enterprise.我使用的是几乎相同的模式/示例 – 使用ADO.Net DataReader通过一个条目(行)检索一个条目(行)的数据.

http://msdn.microsoft.com/en-us/library/haa3afyz.aspx

我的问题是,如果我在此示例中设置SqlCommand超时,
1.我认为超时适用于我们可以用多长时间来检索一个特定行,而不是整个数据逐个循环的总超时?

BTW:循环我的意思是,

while (reader.Read())
{
    Console.WriteLine("{0}t{1}",reader.GetInt32(0),reader.GetString(1));
}

2.
这个超时只考虑从数据库中检索数据条目所需的时间,这个超时与我们处理每个条目的时间无关(例如,如果我们将超时设置为20秒,如果需要1秒钟从数据库中检索一个数据条目,我的应用程序逻辑需要30秒来操作数据条目,永远不会发生超时).

正确理解?

解决方法

您可以设置的命令超时适用于您为ADO.NET执行其工作的时间.

如果调用cmdQuery.ExecuteNonQuery(),它只返回SQL语句,则执行该语句所需的时间.

如果调用返回数据读取器的cmdQuery.ExecuteReader(),那么ADO.NET需要时间来构建/构建该数据读取器,以便您可以使用它.

如果调用返回单个标量值的cmdQuery.ExecuteScalar(),则执行查询并获取该单个结果所需的时间.

如果使用dataAdapter.Fill()填充数据表或数据集,则需要ADO.NET检索数据然后填充数据表或数据集所需的时间.

整体而言:超时适用于ADO.NET可以执行的作业部分 – 执行语句,填充数据集,返回标量值.

当然,它不适用于您迭代结果所花费的时间(如果是数据读取器).这根本没有意义……

(编辑:李大同)

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

    推荐文章
      热点阅读