对数据库进行操作的时候,为什么会重复插入相同的数据?
也是用了Tatabale.ADDNew();

解决方案 »

  1.   

    web程序?
    如果是的话,你要注意在对数据库更新操作(如:插入、修改、删除),需要异步,否则的话,就会出现你所看到现象,至于如何做的话,有很多,例如用mutex来对操作进行互斥
      

  2.   

    Knight94(愚翁) 您说的具体点行么?
    我现在急切需要解决这个问题!
      

  3.   

    sample as follows
    using System.Data;
    using System.Data.SqlClient;
    using System.Threading;static Mutex m;
    int intRet,nExeCount;
    SqlTransaction myTrans;
    if(m==null)
    m=new Mutex(); //Enter into mutex area
    m.WaitOne(); //Execute command
    nExeCount=0;
    do
    {
    // Start a local transaction
    myTrans = sqlConn.BeginTransaction(IsolationLevel.ReadCommitted,
    "MyTransaction");
    try
    {
    // Must assign both transaction object and connection
    // to Command object for a pending local transaction
    sqlComm.Transaction = myTrans;
    sqlComm.CommandTimeout=3600;//Set timeout
    intRet=sqlComm.ExecuteNonQuery();
    myTrans.Commit();
    }
    catch(SqlException sqlErr)
    {
    myTrans.Rollback();
    strErrorMessage = sqlErr.Message;
    intCodeNumber = (int)DataBaseErr.ErrInSQL;
    intRet=-1;
    Thread.Sleep(500); 
    }
    catch(Exception Err)
    {
    myTrans.Rollback();
    strErrorMessage = Err.Message;
    intCodeNumber = (int)DataBaseErr.ErrInException;
    intRet=-1;
    }
    finally
    {
    nExeCount++;
    };
    }while((intRet<0)&&(nExeCount<3)); //Depart from mutex area
    m.ReleaseMutex();
      

  4.   

    你只需修改一下sqlComm中的sql语句和connection就行了
      

  5.   

    并发冲突:UpdateCommand 影响 0 个记录.
    第一次更新没问题,第二次更新没问题,第三次或者第四次就出现这种问题了?
    Knight94(愚翁)
    问题又出在哪了?
      

  6.   

    你的问题很怪,我以前从没遇到过,不管是写winform,还是webform,都没遇到。是否能把你的代码贴出来,或者发给我,地址我上次已经告诉你了
      

  7.   

    注意我的代码:
    要把mutex设为static(最好是全局变量,如果是多个function对数据库操作的话),否则,你每次都new,根本达不到互斥。