各位帮我看看  我是想用trans来更新datagrid修改的数据  碰到这个问题  
 
代码  
private  void  button2_Click(object  sender,  System.EventArgs  e)  
                       {  
                                   this.BindingContext[this.taskDataSet].EndCurrentEdit();  
                                   UpdateTaskWithTransaction((DataSet)  taskDataSet);  
                                   taskDataSet.AcceptChanges();                                      
                         
                       }  
 
public  void  UpdateTaskWithTransaction(DataSet  taskDataSet)  
                       {  
                                   SqlConnection  _conn=new  SqlConnection(CommunionSearchConfiguration.ConnectionString);  
                                   SqlTransaction  trans=null;  
                                     
                                     
                                   SqlDataAdapter  taskDataAdapter=new  SqlDataAdapter(COMMANDTEXT,_conn);  
                                   taskDataAdapter.SelectCommand=new  SqlCommand(COMMANDTEXT,_conn);  
                                     
                                   SqlCommandBuilder  taskCommandBuilder=new  SqlCommandBuilder(taskDataAdapter);  
                                   taskDataAdapter.InsertCommand=taskCommandBuilder.GetInsertCommand();  
                                   taskDataAdapter.DeleteCommand=taskCommandBuilder.GetDeleteCommand();  
                                   taskDataAdapter.UpdateCommand=taskCommandBuilder.GetUpdateCommand();  
                                     
                                   try  
                                   {  
                                     
                                               _conn.Open();  
                                               trans=_conn.BeginTransaction();  
                                               taskDataAdapter.InsertCommand.Transaction=trans;  
                                               taskDataAdapter.DeleteCommand.Transaction=trans;  
                                               taskDataAdapter.UpdateCommand.Transaction=trans;  
                                               //taskDataAdapter.Update(taskDataSet.Tables[TASK_TABLE].Select("","",DataViewRowState.Added));  
                                               taskDataAdapter.Update(taskDataSet.Tables[TASK_TABLE].Select("","",DataViewRowState.ModifiedCurrent));  
                                               //taskDataAdapter.Update(taskDataSet.Tables[TASK_TABLE].Select("","",DataViewRowState.Deleted));  
                                               trans.Commit();  
                                   }  
                                   catch(Exception  ex)  
 
                                   {  
 
                                               trans.Rollback();  
 
                                               throw  new  Exception("更新数据出错",ex);  
 
                                   }  
 
                                   finally  
 
                                   {  
 
                                               if(_conn.State  !=  ConnectionState.Closed)  
 
                                                           _conn.Close();  
 
                                   }  
 
                       }  
 
taskDataAdapter.InsertCommand=taskCommandBuilder.GetInsertCommand();这里出错"未处理的“System.Data.SqlClient.SqlException”类型的异常出现在  system.data.dll  中。  
 
其他信息:  系统错误。"  
请问下 有经验的人什么原因

解决方案 »

  1.   

    可以去http://community.csdn.net/Expert/FAQ/List_Room_FAQ_Index.asp?Roomid=5201
      

  2.   

    一个C# Transcation事例:
    public void UpdateContactTableByDataSet(DataSet ds,string strTblName)
    {
    try
    {
    SqlDataAdapter myAdapter = new SqlDataAdapter();
    SqlConnection  conn = new SqlConnection(strConnection);
    SqlCommand myCommand = new SqlCommand(SQL_GetAllRecordFromDemand(strTblName),conn);
    myAdapter.SelectCommand = myCommand;
    SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);

    conn.Open();
    SqlTransaction myTrans = conn.BeginTransaction();
    myCommand.Transaction = myTrans;

    try
    {
    myAdapter.Update(ds,strTblName);
    myTrans.Commit();
    }
    catch(Exception e)
    {
    try
    {
    myTrans.Rollback();
    }
    catch (SqlException ex)
    {
    if (myTrans.Connection != null)
    {
    Console.WriteLine("回滚失败! 异常类型: " + ex.GetType());
    }
    }
    }
    finally
    {
    conn.Close();
    }

    }
    catch(Exception ex)
    {
    throw ex;
    }
    }
      

  3.   

    to ttlrwdl那里没有啊
    to ChengKing(bantamweight) 谢谢了 例子和我的不符合