首页 新闻 赞助 找找看

datareader问题 急救!!!

0
悬赏园豆:50 [已关闭问题] 关闭于 2011-04-27 13:15

在本机运行时,没有任何问题。但是提交到服务器是却出现了上述问题。不知道什么原因?请高手指教!

问题补充: 分不够可以在加,只要问题解决 SqlHelper类的ExecuteReader方法如下: public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); // we use a try/catch here because if the method throws an exception we want to // close the connection throw code, because no datareader will exist, hence the // commandBehaviour.CloseConnection will not work try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } }
Survival.Sun的主页 Survival.Sun | 菜鸟二级 | 园豆:267
提问于:2011-04-26 19:06
< >
分享
所有回答(4)
0

调用的代码是啥样子的?

Justin.zhang | 园豆:440 (菜鸟二级) | 2011-04-26 19:27
0

PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

里面代码是怎样写的?

是否预处理时PrepareCommand已经把打开了?

关于本机可以,但是发布后不可以,极有可能是因为本机的Debug模式时,编译器特殊处理了。

mywork | 园豆:475 (菜鸟二级) | 2011-04-27 08:18
PrepareCommand里面的内容如下:
if (conn.State != ConnectionState.Open)
conn.Open();

cmd.Connection = conn;
cmd.CommandText = cmdText;

if (trans != null)
cmd.Transaction = trans;

cmd.CommandType = cmdType;

if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
支持(0) 反对(0) Survival.Sun | 园豆:267 (菜鸟二级) | 2011-04-27 09:38
0

已有打开与此命令相关联的DataReader,必须首先将它关闭

爱研究源码的javaer | 园豆:930 (小虾三级) | 2011-04-27 09:01
0

DataReader在调用完毕后是需要关闭的。随用随关。可以使用这种方式:

using(SqlDataReader reader = ...)

{

      string temp = reader["column"].ToString();

}

这个代码块是自动关闭的。

或者把你原有调用的代码放到try块中,加一个finaly块,在其中写上关闭代码,例如:

reader.Close();

本机没出问题,是因为本机使用量小,数据库连接少。服务器上数据库连接多了,大于了连接池的最大数量,就会报错。

飞笑 | 园豆:212 (菜鸟二级) | 2011-04-27 09:42
我一直都是按照你上面那样写的,还是出问题。而且每个调用 datareader的操作都做了手动关闭。一样没解决问题。网上查到ExecuteNonQuery也会打开一个空的datareader 不知道该怎么关闭
支持(0) 反对(0) Survival.Sun | 园豆:267 (菜鸟二级) | 2011-04-27 09:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册