本帖最后由 hmy_521 于 2013-04-03 10:54:26 编辑

解决方案 »

  1.   

    Timeout可以设置,但是设置过大会有其他影响,就看你事务执行的操作是否复杂,
      

  2.   

    经查询,不是Timeout的问题,是同时执行更新和查询导致的错误。
    cmd.CommandText =  "update users set username='张三' where id=1 ";
    int currentResult = cmd.ExecuteNonQuery();
    string newSql = "select count(1) from users where id=1";
    object objTest = ExcuteTwo(newSql);
    PS:
    更新语句执行后,事务未提交,表被锁死,同时执行同一张表的查询操作,必然超时。 
    求解决办法。
      

  3.   

    链接串加上TimeOut=30;试试server=.;uid=sa;pwd=密码;database=数据库名称;TimeOut=30;
      

  4.   

    将ExecuteOne()函数里的事务去掉。
      

  5.   

    object objTest = ExcuteTwo(newSql); 用当前函数的cmd执行吧,事务是当前连接的事务,你ExcuteTwo函数又新建连接,表肯定锁了~
      

  6.   

     ExcuteTwo方法又打开了数据库?
      

  7.   

     ExcuteTwo方法又打开了数据库,有没有办法在ExcuteOne事务未提交前提下,重新打开数据库?