我定义了一类打开数据库,并执行SQL语句,但在多线程下面就很不稳定
public static void Cmd_ExecuteNonQuery(string strsql, string conn){
System.Data.OleDb.OleDbConnection sqlconn = new System.Data.OleDb.OleDbConnection(conn);
System.Data.OleDb.OleDbCommand cmdTable = new System.Data.OleDb.OleDbCommand(strsql, sqlconn);
cmdTable.CommandType = CommandType.Text;
if (sqlconn.State == ConnectionState.Closed)
{
sqlconn.Open();
}
cmdTable.ExecuteNonQuery();
sqlconn.Close();
sqlconn.Dispose();
}
经常出错。有什么办法来解决这个问题呢?
我发现原因就是不同线程对数据库开关处理上的问题,比如说A线程打开了,B线程却将它关了。 --------------------编程问答-------------------- 真的吗?
和多线程有什么关系,你这个方法里又没用到多个线程同时引用的变量,每个线程都是new自己的,咱们会同时关闭呢 --------------------编程问答-------------------- 搂主的代码用在多线程中不会有问题,可能原因是数据表的地访问冲突。
--------------------编程问答-------------------- 我是在线程中操做数据库的.我有N个线程,每个线程都写表 --------------------编程问答-------------------- 每个线程都写表 应该用synchronize同步一下吧 --------------------编程问答-------------------- cmdTable.ExecuteNonQuery();
sqlconn.Close();
sqlconn.Dispose();
比较不安全是这个过程,没有写保护代码。再者,这个多线程程序有可能用完数据库连接,连接时,也要加上保护代码。
没有一种方法能保证 执行 时不出错 ,重要的是,出错时你如何处理。
看了代码,你的错和多线程应该没有关系。
--------------------编程问答-------------------- 是不是执行的sql语句,导致死锁了
补充:.NET技术 , C#