SqlDataReader 提前终止的性能问题
2009-10-14 09:06
405 查看
作者:eaglet
SqlDataReader对象可以逐行读取数据信息,但如果有10000行数据而我们只希望读取前面的100行数据,读取完后调用SqlDataReader.Close会非常慢。实际上调用SqlDataReader.Close时SqlDataReader会把后面的9900行数据全部读完才结束。
这个问题的解决办法是在SqlDataReader.Close前调用SqlCommand.Cancel,取消当前命令。
代码如下:
[code]SqlDataReader_DataReader;
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
SqlDataReader对象可以逐行读取数据信息,但如果有10000行数据而我们只希望读取前面的100行数据,读取完后调用SqlDataReader.Close会非常慢。实际上调用SqlDataReader.Close时SqlDataReader会把后面的9900行数据全部读完才结束。
这个问题的解决办法是在SqlDataReader.Close前调用SqlCommand.Cancel,取消当前命令。
代码如下:
SqlConnection_Conn;
[code]SqlDataReader_DataReader;
SqlCommand_Command;
publicvoidOpenDataReader(stringqueryString)
{
_Command=newSqlCommand(queryString,_Conn);
_DataReader=_Command.ExecuteReader();
}
publicvoidDispose()
{
try
{
if(_Conn!=null)
{
_Command.Cancel();
_DataReader.Close();
if(_Conn.State!=ConnectionState.Closed&&
_Conn.State!=ConnectionState.Broken)
{
_Conn.Close();
}
_Conn=null;
}
}
catch
{
}
}
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
相关文章推荐
- 【转】SqlDataReader 提前终止的性能问题
- SqlDataReader 提前终止的性能问题(转)
- SqlDataReader 提前终止的性能问题
- C# 使用SqlDataReader 注意问题
- SqlDataReader的关闭问题
- .NET深入学习笔记(1):DataSet和SqlDataReader性能差异深入剖析与测试(1)
- asp.net中SqlDataReader使用时关闭数据库连接的问题(转)
- SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 Read 无效”
- SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 Read 无效”
- .NET深入学习笔记(1):DataSet和SqlDataReader性能差异深入剖析与测试
- 关于SqlDataReader不支持分页的问题
- 关于数据库查询语句SqlDataReader的连接释放问题的解决办法
- .NET学习笔记-1:DataSet和SqlDataReader性能差异
- 关于SqlDataReader类型的变量传值问题
- 讲一下SqlDataReader的关闭问题,出现"阅读器关闭时尝试调用 FieldCount 无效"
- 关于sqlDataReader的问题
- SqlDataReader 关闭问题:阅读器关闭时尝试调用 Read 无效
- SqlDataReader的conn关闭问题(mysqldatareader),以及 ExecuteNonQuery,ExecuteScalar,ExecuteReader,SqlDataAdapter哪些需要conn.open
- SqlDataReader的关闭问题
- SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 HasRows 无效”