我试了一下,报错,分开执行没问题。看来只能是事务里用SqlCommand的ExecuteNonQuery更新数据库,在SqlDataAdapter执行Update时捕捉异常,如有异常事务回卷。

解决方案 »

  1.   

    我没试过,我习惯于用SqlCommand的ExecuteNonQuery操作数据库
      

  2.   

    没有这种限制。只要是在同一个Connection对象上
      

  3.   

    1楼:有时还是用SqlDataAdapter的Update方法更新数据库方便。2楼:不行,报错:当分配给命令的连接处于挂起的本地事务中时,命令必须具有本地事务对象才能执行。该命令的Transaction属性尚未初始化。代码如下:SqlConnection myConnection = new SqlConnection(DataBaseOperation.strSqlConDataBaseOperation);
    myConnection.Open();SqlCommand myCommand = myConnection.CreateCommand();
    SqlTransaction myTrans;myTrans = myConnection.BeginTransaction();
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;try
    {
    myCommand.CommandText = "Insert Into ProPlaDocuments_main([customer],[date],[state]) Values('" + this.textCustomer.Text + "','" + dtpDate.Value + "','未出库')";
    myCommand.ExecuteNonQuery();
    SqlDataAdapter sqldataadapter = new SqlDataAdapter("Select * From ProPlaDocuments_details",myConnection);
    new SqlCommandBuilder(sqldataadapter);
    sqldataadapter.Update(this.dTableProPlaDocuments_details);
    myTrans.Commit();
    }
    catch...
      

  4.   

    Adapter的update实际上就是调用其所属的UpdateCommand
      

  5.   

    谢谢楼上,能说一下具体怎么写吗?我写了如下代码,还不行,报错“未将对象引用设置到对象实例”SqlConnection myConnection = new SqlConnection(DataBaseOperation.strSqlConDataBaseOperation);
    myConnection.Open();SqlCommand myCommand = myConnection.CreateCommand();
    SqlTransaction myTrans;myTrans = myConnection.BeginTransaction();
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;try
    {
    myCommand.CommandText = "Insert Into ProPlaDocuments_main([customer],[date],[state]) Values('" + this.textCustomer.Text + "','" + dtpDate.Value + "','未出库')";
    myCommand.ExecuteNonQuery();
    SqlDataAdapter sqldataadapter = new SqlDataAdapter("Select * From ProPlaDocuments_details",myConnection);
    new SqlCommandBuilder(sqldataadapter);
    sqldataadapter.SelectCommand.Transaction = myTrans;
    sqldataadapter.InsertCommand.Transaction = myTrans;
    sqldataadapter.UpdateCommand.Transaction = myTrans;
    sqldataadapter.DeleteCommand.Transaction = myTrans;
    sqldataadapter.Update(dTableProPlaDocuments_details);
    myTrans.Commit();
    }
    catch...
      

  6.   

    有答案了:http://community.csdn.net/Expert/topic/4957/4957796.xml?temp=.5720026