关于读取数据库记录时`用户刷新过快导致错误! 希望高手帮我看下!谢谢咯!
关于读取数据库记录时`用户刷新过快导致错误! 希望高手帮我看下!谢谢咯!
为什么用asp.net读取数据的时候。
如果用户刷新频率太快了
就会出现错误!数据读取错误`
只有在用户一直刷新的时候才会出现。
而且只要一出错。
其他用户继续访问。也会出错。
但是一会就好了`
请问是怎么回事`
错误信息有的时候不一样。。
反正都是跟数据库读取错误有关
以下是出错的代码段`
public void page_tongji(string Qwhere, string Qtable, string Qtop)
{
conn = new SqlConnection(sql);
SqlCommand cmd;
//如果数据库连接关闭`就打开...
if (conn.State == ConnectionState.Open) { conn.Close(); } else { conn.Open(); }
cmd = new SqlCommand( "QQ_count ", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( "@table ", SqlDbType.Char);
cmd.Parameters.Add( "@where ", SqlDbType.VarChar);
cmd.Parameters[ "@where "].Value = Qwhere;
cmd.Parameters[ "@table "].Value = Qtable;
Page_Count = Convert.ToInt32(cmd.ExecuteScalar());
//得到当前可以分为多少页
if ((Page_Count % Convert.ToInt32(Qtop)) != 0)
Page_Qpage = (Page_Count / Convert.ToInt32(Qtop)) + 1;
else
Page_Qpage = (Page_Count / Convert.ToInt32(Qtop));
cmd.Dispose();
conn.Close(); //关
}
错误提示是:
Page_Count = Convert.ToInt32(cmd.ExecuteScalar());
阅读器关闭时 Read 的尝试无效。
[解决办法]
你这个connection难道是static类型的?
最好就是个局部变量
SqlConnection conn = new SqlConnection(sql);
SqlCommand cmd;
//如果数据库连接关闭`就打开...
if (conn.State == ConnectionState.Open) { conn.Close(); } else { conn.Open(); }
cmd = new SqlCommand( "QQ_count ", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( "@table ", SqlDbType.Char);
cmd.Parameters.Add( "@where ", SqlDbType.VarChar);
cmd.Parameters[ "@where "].Value = Qwhere;
cmd.Parameters[ "@table "].Value = Qtable;
Page_Count = Convert.ToInt32(cmd.ExecuteScalar());
//得到当前可以分为多少页
if ((Page_Count % Convert.ToInt32(Qtop)) != 0)
Page_Qpage = (Page_Count / Convert.ToInt32(Qtop)) + 1;
else
Page_Qpage = (Page_Count / Convert.ToInt32(Qtop));
cmd.Dispose();
conn.Close(); //关
[解决办法]
if (conn.State == ConnectionState.closed) { conn.Open(); }
如果关闭的情况下就打开,打开的时候就不用管它拉