当前位置:编程学习 > C#/ASP.NET >>

我定义了一类打开数据库,并执行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个线程,每个线程都写表 --------------------编程问答--------------------
引用 3 楼 coolcxm 的回复:
我是在线程中操做数据库的.我有N个线程,每个线程都写表
每个线程都写表 应该用synchronize同步一下吧 --------------------编程问答--------------------                         cmdTable.ExecuteNonQuery(); 
                        sqlconn.Close(); 
                        sqlconn.Dispose(); 
比较不安全是这个过程,没有写保护代码。再者,这个多线程程序有可能用完数据库连接,连接时,也要加上保护代码。

没有一种方法能保证 执行 时不出错 ,重要的是,出错时你如何处理。

看了代码,你的错和多线程应该没有关系。
--------------------编程问答-------------------- 是不是执行的sql语句,导致死锁了
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,