在我的asp.net 网站中 偶尔会出现 某一列不属于该表的错误提示, 但是可以确定的是,该列在表中确实存在,有哪位高手知道是怎么回事吗?万分紧急,大虾帮忙啊 !!!!
1 private static SqlConnection connection; 2 3 //根据web.config得到一个SqlConnection 4 public static SqlConnection Connection 5 { 6 get 7 { 8 string connectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 9 if (connection == null) 10 { 11 connection = new SqlConnection(connectionString); 12 connection.Open(); 13 } 14 else if (connection.State == System.Data.ConnectionState.Closed) 15 { 16 connection.Open(); 17 } 18 else if (connection.State == System.Data.ConnectionState.Broken) 19 { 20 connection.Close(); 21 connection.Open(); 22 } 23 return connection; 24 } 25 } 26 //得到无参一个表 27 public static DataTable GetDataSet(string safeSql) 28 { 29 DataSet ds = new DataSet(); 30 SqlCommand cmd = new SqlCommand(safeSql, Connection); 31 SqlDataAdapter da = new SqlDataAdapter(cmd); 32 da.Fill(ds); 33 if (connection != null) 34 { 35 connection.Close(); 36 connection.Dispose(); 37 connection = null; 38 } 39 40 return ds.Tables[0]; 41 42 }
调试中发现,返回表的内容是另外一张表的内容,这是怎么回事啊 ???
查询sql字符串拼接的问题?能不能把大概代码写一些?
但是这个问题是偶尔出现的啊 一般是并发操作多的情况下引起的 不知道有没有别的原因?谢谢了 !!!
@youhumian: 别再那里纠结了,我这里写好了一个现成的:https://smartbooks.googlecode.com/svn/trunk/Smart/SmartDBUtility/SqlServerHelper.cs
@SmartBooks: 谢谢了 呵呵
这是sql语句写错了的原因,你可以查下在拼sql语句时,是否有全局变量,或者有多线程的代码
我已经把全局变量改成了局部变量了啊 多线程的代码是什么意思啊?谢谢啊!
@youhumian: 多线程就是多个线程同时执行,如果是全局变量的原因的话,好解决,是多线程的话,你就要把你的代码贴上来好多才行,否则我们也不知道是哪里出现这种情况了。
@az235: 上面是我调用数据库主要用到的代码,有一次调试发现,返回表的内容是另外一张表的内容,请问,这是什么情况啊???大侠
@youhumian: 是你的代码没有线程安全。
@imfunny: 从贴出来的代码来看,哥们你的分析很有道理,建议再检查下safeSql这个参数传入的值,是否有问题。
try,catch一下这个异常,记日志,看看异常时候的sql语句是什么样的就可以了
应该有条件判断,不同的条件,返回的列不一样
改用实体类就好了,弱类型就容易出现各种运行时错误。
表格控件GrivView控件或者其他的数据控件字段绑定赋值问题,请重新检查!你是如何取控件里边字段值得!Debug一下..尽量不要用控件。。。。会让人变成脑残的。。