c#用OleDbCommand批量更新Access中的一个表中的部份记录,启用Transaction了事务,但在更新的过程中事务锁定的是整张表,而不仅仅是更新的那些数据,且更新过程中(启用Transaction后,还没有提交和回滚之前),向表中插入记录时,提示被锁定。
同样的代码在另一个程序中运行后却没有问题,代码如下:        public static bool UpdateByIDEx(Tb_TC[] entitys, out System.Data.OleDb.OleDbTransaction Transaction)
        {
            System.Data.OleDb.OleDbCommand objUpdateCommand = CreateUpdateCommand();
            objUpdateCommand.Connection.Open();
            Transaction = objUpdateCommand.Connection.BeginTransaction(IsolationLevel.ReadCommitted);
            objUpdateCommand.Transaction = Transaction;                for (int i = 0; i < entitys.Length; i++)
                {
                    string sql = string.Format("Update Tb_TC set bJY={0},dtSYJSRQ=#{1}#,dtSYQSRQ=#{2}#,dtXSJSRQ=#{3}#,dtXSQSRQ=#{4}#,fTCFY={5},sBH=\'{6}\',sDGUID=\'{7}\',sSM=\'{8}\',sTCLY=\'{9}\' where sGUID=\'{10}\'", 
                        entitys[i].bJY, entitys[i].dtSYJSRQ, entitys[i].dtSYQSRQ, entitys[i].dtXSJSRQ, entitys[i].dtXSQSRQ, entitys[i].fTCFY, entitys[i].sBH, entitys[i].sDGUID, entitys[i].sSM,entitys[i].sTCLY,entitys[i].sGUID);                    objUpdateCommand.CommandText = sql;
                    objUpdateCommand.ExecuteNonQuery();
                }
         }当程序运行到:objUpdateCommand.ExecuteNonQuery();时整个表就锁定了,必须提交或回滚后,其它程序才能对这个表进行操作