想写一段代码测一下如果打开很多的数据库连接,提取很多的datareader? 代码怎么写,我想用一个循环来完成,可是必须关上一个datareader才能读下一个,不会写,请教!!一开始我以为很好写,可是发现不好写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在循环里写一个线程,由线程去读取数据库循环100次,就有一百个datareader在同时读数据库了. SqlDataReader [] dr = new SqlDataReader[5]; for (int i = 0; i < 5; i++) { dr[i] = null; RunProc("killyourdisk", out dr[i]); dr[i].Close(); } 我不想写dr[i].Close(); 可是不写这一句程序执行不了。为什么写这个程序,请看我前几天写的帖子http://topic.csdn.net/u/20090614/10/69ddc592-6a8b-486a-99d4-eadad9995698.html想看看是什么原因 我想看看N多个数据连接和DR,会给数据库哪边造成什么后果!我已多次丢硬盘上的文件了。 public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(); try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//此处去掉下面得代码则不关闭 //当连接池满了程序就弹错误页面了 //CommandBehavior.CloseConnection cmd.Parameters.Clear(); return myReader; } catch (System.Data.SqlClient.SqlException e) { throw e; } // finally // { // cmd.Dispose(); // connection.Close(); // } } using (IDataReader reader = da.ExecuteReader(sql)){ //todo} 如果你不怕网站上有性能损耗的话建议using(因为这种方法比较省子儿),如果想节约的话专门弄出个DBHelper类,每次执行完改类以后在析构函数里dispose和close就应该没什么大问题了 同一个连接当然只能有一个DataReader,你想要多个Reader,就要建立多个连接. 同志们呐,是我表达能力不好,还是你们的理解力差,我就是想写段代码,想开很多很多的连接,打开很多很多的DATAREADER,说白了,我想看看能不能搞死我的服务器。弄清楚我的网站为什么会出这么怪的问题。因为我的网站过几个会崩溃一次,文件全丢。这个问题很难吗?我说的话不好理解吗? 谢谢大家,当初是为了测试一下服务器崩溃是不是资源耗尽的问题,看来不是,可能是网络漏洞引起的http://topic.csdn.net/u/20090625/15/dbb743d9-f5b8-49d7-a392-3678d51c8276.html 越来越多的证据显示了这一点,当初的思路不对,不过谢谢大家回复! 如何知道一个网站是否需要ASP.NET ASP.NET 方法调用 【系统比较大时基础数据表的设计】 不用控件能做成像OUTLOOK那样伸缩的menu吗? Ajax的方法在Web页面上的函数名怎么命名? (在线)大家帮我解决一下获取datagrid选定行的某列值的问题 asp.net能否隐藏网页扩展名? 邮件可以发送,但如何达到自动发送的功能呢,先谢了 客户端的javascript能否访问到后台的方法 陷阱 ---- 残痛的教训 为了这段代码,非把我沦为赤贫不可吗? 向高手致敬、问早,请高手帮忙解决一下问题 在线等 高手 救命啊 高手们!!!!
由线程去读取数据库循环100次,就有一百个datareader在同时读数据库了.
for (int i = 0; i < 5; i++)
{
dr[i] = null;
RunProc("killyourdisk", out dr[i]);
dr[i].Close();
} 我不想写dr[i].Close(); 可是不写这一句程序执行不了。
为什么写这个程序,请看我前几天写的帖子http://topic.csdn.net/u/20090614/10/69ddc592-6a8b-486a-99d4-eadad9995698.html
想看看是什么原因
public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
{
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//此处去掉下面得代码则不关闭
//当连接池满了程序就弹错误页面了
//CommandBehavior.CloseConnection cmd.Parameters.Clear();
return myReader;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
// finally
// {
// cmd.Dispose();
// connection.Close();
// } }
{
//todo
}
这个问题很难吗?
我说的话不好理解吗?