关闭 IDataReader 时执行超时已过期
Execution Timeout Expired when closing IDataReader
我正在从 SQL 服务器检索大量数据。一切正常,但是当我尝试使用 语句
在 中关闭 IDataReader 时
try
{
using (SqlConnection con = new SqlConnection(connString))
{
con.Open();
using (SqlCommand command = new SqlCommand(sql_query, con))
{
command.CommandTimeout = 0;
using (IDataReader rdr = new SqlCommand(sql_query, con).ExecuteReader(CommandBehavior.SequentialAccess))
{
dataTable = GetDataTableFromDataReader(rdr);
}
....
我得到:
执行超时已过期。操作完成前超时期限已过或服务器未响应。
使用 rdr = null 这样的东西会更好吗?或者有没有其他更好的解决方案如何关闭 IDataReader?
注意连接和命令都有超时设置。您无需在 using 块内手动关闭或处置。
您正在 using
块中创建第二个 SqlCommand
,它没有设置超时。更改为:
using (IDataReader rdr = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
dataTable = GetDataTableFromDataReader(rdr);
}
我正在从 SQL 服务器检索大量数据。一切正常,但是当我尝试使用 语句
在 中关闭 IDataReader 时try
{
using (SqlConnection con = new SqlConnection(connString))
{
con.Open();
using (SqlCommand command = new SqlCommand(sql_query, con))
{
command.CommandTimeout = 0;
using (IDataReader rdr = new SqlCommand(sql_query, con).ExecuteReader(CommandBehavior.SequentialAccess))
{
dataTable = GetDataTableFromDataReader(rdr);
}
....
我得到: 执行超时已过期。操作完成前超时期限已过或服务器未响应。
使用 rdr = null 这样的东西会更好吗?或者有没有其他更好的解决方案如何关闭 IDataReader?
注意连接和命令都有超时设置。您无需在 using 块内手动关闭或处置。
您正在 using
块中创建第二个 SqlCommand
,它没有设置超时。更改为:
using (IDataReader rdr = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
dataTable = GetDataTableFromDataReader(rdr);
}