我在多线程中执行对ACCESS数据库的insert和update操作,程序运行过程中出现“无法更新,当前被锁定”错误,请问怎么解决?据说ACCESS数据库是单线程的,估计要在写的时候进行Lock,怎么Lock,请教大家!

解决方案 »

  1.   

    同一条数据只会进行一次操作,或Updata,或Insert,请问怎么同步?
      

  2.   

    我在多线程中操作数据库是这样的:
                    using (OleDbConnection conn = new OleDbConnection(CONNSTR))
                    {
                        conn.Open();
                        OleDbCommand cmd = new OleDbCommand(sql, conn);
                        lock (cmd)
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
    请问这样对吗?
      

  3.   

    没办法。ACCESS毕竟只允许一个写。 能同时又insert 又delete
    自己加上容错处理。 或者thread 避开这个 insert /delete 同时发生。 
      

  4.   

    ACCESS能允许多个线程同时读(select)吗?比如这段代码可以在多线程里执行吗?
    string sql1 = "select * from CapData_G ";                                OleDbCommand cmd1 = new OleDbCommand(sql1, conn);
    OleDbDataReader dr1 = cmd1.ExecuteReader();
    if (dr1.Read())