您的位置:首页 > 数据库

SqlDataReader 提前终止的性能问题

2009-10-14 09:06 405 查看
作者:eaglet

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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: