我的想做的是从Excel中读取两张表fill到dataset中然后用
adapter.Update(DataSet,"TableName")更新数据库这样做如何设置事务呢?
这是我的部分有误代码,请指点一下。谢谢!
            Trans = dbConnection.BeginTransaction();
            
            dbAdapter.InsertCommand.Transaction = Trans;
            dbAdapter2.InsertCommand.Transaction = Trans;
            // 把员工信息的数据从dbDataSet导入数据库      
            dbAdapter.Update(dbDataSet, "UserInfor");
            dbAdapter2.Update(dbDataSet2, "Contact");
            Trans.Commit();

解决方案 »

  1.   

    因为 insertCommand/ updateCommand 未实例化。参考: 至于是insertCommand还是updateCommand看你自己的情况了。 OleDbCommandBuilder cmdb = new OleDbCommandBuilder(dbAdapter);
    dbAdapter.UpdateCommand = cmdb.GetUpdateCommand();         try
              { dbAdapter.UpdateCommand.Transaction = Trans;
    dbAdapter.Update(dbDataSet,"UserInfor);
    Trans.Commit();
              }
              catch ()
              { Trans.Rollback();
              }
      

  2.   

    我这样写为什么还有错误呢?
     private void GetdbDataUser(string TableName)
        {
            dbAdapter = new SqlDataAdapter();
            dbAdapter.SelectCommand = new SqlCommand("Select * from " + TableName, dbConnection);
            SqlCommandBuilder dbCommandBuilder1 = new SqlCommandBuilder(dbAdapter);
            dbAdapter.UpdateCommand = dbCommandBuilder1.GetUpdateCommand();
            dbAdapter.Fill(dbDataSet, TableName);
            
        }
        //------------------------------------------------------------------------------------------------------------------------------------------------------------------
        // <summary>
        // 从数据库中取得Contact数据 </summary>
        // <param name="TableName">
        //  要取数据的表名</param>
        // <returns>
        //     无</returns>
        //------------------------------------------------------------------------------------------------------------------------------------------------------------------
        private void GetdbDataContact(string TableName)
        {
            dbAdapter2 = new SqlDataAdapter();
            dbAdapter2.SelectCommand = new SqlCommand("Select * from " + TableName, dbConnection);
            SqlCommandBuilder dbCommandBuilder2 = new SqlCommandBuilder(dbAdapter2);
            dbAdapter2.UpdateCommand = dbCommandBuilder2.GetUpdateCommand();
            dbAdapter2.Fill(dbDataSet2, TableName);
        }
        //------------------------------------------------------------------------------------------------------------------------------------------------------------------
        // <summary>
        //    导入员工信息 </summary> 
        // <returns>
        //     无</returns>
        //------------------------------------------------------------------------------------------------------------------------------------------------------------------
        private void UpdateStaffInfor()
        {
            GetdbDataUser("UserInfor");
            GetdbDataContact("Contact");        //向数据库的DATASET中导入数据        FillDataSet();
            try
            {
                Trans = dbConnection.BeginTransaction();
                dbAdapter.UpdateCommand.Transaction = Trans;
                dbAdapter2.UpdateCommand.Transaction = Trans;
                //dbAdapter.InsertCommand.Transaction = Trans;
                //dbAdapter2.InsertCommand.Transaction = Trans;
                // 把员工信息的数据从dbDataSet导入数据库      
                dbAdapter.Update(dbDataSet, "UserInfor");
                dbAdapter2.Update(dbDataSet2, "Contact");
                Trans.Commit();
            }
      

  3.   

    运行到这一行
    dbAdapter2.UpdateCommand = dbCommandBuilder2.GetUpdateCommand();
    时会报这样的错: 
    “对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成”。