急,请高手赐教asp.net写的客户端,两个客户端不能同时访问!
请高手帮忙指点下:我用asp.net些了个网页,供查询使用,因为查询时间可能需要一分钟,所以在一分钟内,另外一个用户B若登录,则A用户查询立刻报错:
System.IndexOutOfRangeException: 无法找到表 0。
当然,两个用户也不能同时查询!
请高手帮忙找个解决方法!
感谢!
--------------------编程问答-------------------- 不明白,你可以把代码贴出来吗?有代码有真相。。 --------------------编程问答-------------------- 这个应该是数据访问的并发问题,
问题的根源应该是:一个客户端正在查询的1分钟内,如果另一个客户端也要来读数据库,则就会出现异常!
我不知道怎么处理这个并发问题,请高手赐教啊!
感激不尽! --------------------编程问答-------------------- 赶快来帮忙解决啊!,着急啊!
这个就是两个客户端在同一时间点访问同一个表,出错
public static DataTable GetDataSet(string safeSql, params SqlParameter[] values)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
} --------------------编程问答-------------------- 你可以断点一下 断点放到最后一句 看看 ds 里面有没有这个表 或者有没有数据
可能你是sql 语句写错了 --------------------编程问答-------------------- 数据库查询时在表明后面加(nolock)
--------------------编程问答-------------------- 这种事不会发生 --------------------编程问答-------------------- 只有两个用户并行而已啊,照讲数据库可以轻松应付的,可能你程序上有些问题吧
非要用程序限制:
在a用户开始查询时做个记号,比如在application里,在xml里,session里等等设置x=1,b用户登录前读取x,如果等于1,则提示等待,=0则直接登录。a用户查询完成后改变x=0 --------------------编程问答-------------------- 如果有人查询 就锁住罗
告诉别人数据库正忙 要他等一下
如果出现这种情况报异常的话 就把错误页面导向这个提示页面
“数据库繁忙,请稍候在查询!” --------------------编程问答-------------------- 你是写成静态的了吧,第二用户把第一个用户的东西改了,当然会有错了
补充:.NET技术 , ASP.NET