具体是这个样子的:
通过查询语句将数据集放入DATASET,
通过对这个DATASET进行多次插入和更新及删除操作后,
使用SQLADPTER将此DATASET对进行数据库批处理的更新操作(操作包括之前的插入和更新及删除)
假如哪位高人能看明白请给块代码指点指点.

解决方案 »

  1.   

    1楼也不算开玩笑.google里可以查到很多这样的例子.这有我自己的一段代码private void updateDB()
            {
                try
                {
                    SqlConnection conn = new SqlConnection(PubVar.PubStr);
                    
                    SqlDataAdapter sda = new SqlDataAdapter();
                    sda.SelectCommand = new SqlCommand("delete * form sms_sendout_info",cn);
                    cn.Open();
                    DataSet ds = new DataSet();
                    ds.Tables.Add("sms_sendout_info");
                    sda.Fill(ds);
                    sda.Update(ds,"sms_sendout_info");
                }
                catch (Exception err)
                {
                    throw new ApplicationException(err.Message);            }        }
      

  2.   

    谢谢你的代码 不过GOOGLE啥都有 那要上CSDN干吗?
      

  3.   

    关注,我也有类似的问题,发了两贴,没有彻底解决:如何将DataTable中数据Insert到SQL Server的非空表中?谢谢!
    http://community.csdn.net/Expert/topic/4953/4953172.xml?temp=.912594如何将DataGrid中的动态数据“添加”到数据库表中?
    http://community.csdn.net/Expert/topic/4968/4968579.xml?temp=.4478876
      

  4.   

    返回数据public RightSet Select()
    {
    RightSet pscpm_right = new RightSet();
    _adapter.SelectCommand = GetSelectCommand();
    _adapter.Fill(pscpm_right);
    return pscpm_right;
    }private SqlCommand GetSelectCommand()
    {
    if(_selectCmd == null)
    {
    _selectCmd = new SqlCommand("SELECT guid, UserId, ModuleId, ModuleName, ViewRight, EditRight FROM pscpm_right");
    _selectCmd.Connection = new SqlConnection(DataCommon.ConnectionString);
    }
    return _selectCmd;
    }
      

  5.   

    添加,修改,删除public bool Update(RightSet pscpm_right)
    {
    try
    {
    _adapter.InsertCommand = GetInsertCommand();
    _adapter.UpdateCommand = GetUpdateCommand();
    _adapter.DeleteCommand = GetDeleteCommand();
    _adapter.Update(pscpm_right);
    return true;
    }
    catch
    {
    return false;
    }
    }
    private SqlCommand GetInsertCommand()
    {
    if(_insertCmd == null)
    {
    _insertCmd = new SqlCommand();
    _insertCmd.CommandText = "INSERT INTO pscpm_right(guid, UserId, ModuleId, ModuleName, ViewRight, EditRight,ProjectUID) " +
    "VALUES (@guid, @UserId, @ModuleId, @ModuleName, @ViewRight, @EditRight,@ProjectUID) ";
    _insertCmd.Connection = new SqlConnection(DataCommon.ConnectionString);
    _insertCmd.Parameters.Add(new SqlParameter("@guid", System.Data.SqlDbType.VarChar, 38, "guid"));
    _insertCmd.Parameters.Add(new SqlParameter("@UserId", System.Data.SqlDbType.VarChar, 38, "UserId"));
    _insertCmd.Parameters.Add(new SqlParameter("@ModuleId", System.Data.SqlDbType.VarChar, 3, "ModuleId"));
    _insertCmd.Parameters.Add(new SqlParameter("@ModuleName", System.Data.SqlDbType.VarChar, 50, "ModuleName"));
    _insertCmd.Parameters.Add(new SqlParameter("@ViewRight", System.Data.SqlDbType.VarChar, 1, "ViewRight"));
    _insertCmd.Parameters.Add(new SqlParameter("@EditRight", System.Data.SqlDbType.VarChar, 1, "EditRight"));
    _insertCmd.Parameters.Add(new SqlParameter("@ProjectUID", System.Data.SqlDbType.VarChar, 38, "ProjectUID"));
    }
    return _insertCmd;
    }
    private SqlCommand GetUpdateCommand()
    {
    if(_updateCmd == null)
    {
    _updateCmd = new SqlCommand();
    _updateCmd.CommandText = "UPDATE pscpm_right SET UserId = @UserId, ModuleId = @ModuleId, ModuleName = @ModuleName, ViewRight = @ViewRight, EditRight = @EditRight WHERE guid = @guid";
    _updateCmd.Connection = new SqlConnection(DataCommon.ConnectionString);
    _updateCmd.Parameters.Add(new SqlParameter("@guid", System.Data.SqlDbType.VarChar, 38, "guid"));
    _updateCmd.Parameters.Add(new SqlParameter("@UserId", System.Data.SqlDbType.VarChar, 38, "UserId"));
    _updateCmd.Parameters.Add(new SqlParameter("@ModuleId", System.Data.SqlDbType.VarChar, 3, "ModuleId"));
    _updateCmd.Parameters.Add(new SqlParameter("@ModuleName", System.Data.SqlDbType.VarChar, 50, "ModuleName"));
    _updateCmd.Parameters.Add(new SqlParameter("@ViewRight", System.Data.SqlDbType.VarChar, 1, "ViewRight"));
    _updateCmd.Parameters.Add(new SqlParameter("@EditRight", System.Data.SqlDbType.VarChar, 1, "EditRight"));
    }
    return _updateCmd;
    }
    private SqlCommand GetDeleteCommand()
    {
    if(_deleteCmd == null)
    {
    _deleteCmd = new SqlCommand("DELETE FROM pscpm_right WHERE guid = @guid");
    _deleteCmd.Connection = new SqlConnection(DataCommon.ConnectionString);
    _deleteCmd.Parameters.Add(new SqlParameter("@guid", System.Data.SqlDbType.VarChar, 38, "guid"));
    }
    return _deleteCmd;
    }
    private SqlCommand GetSelectCommand()
    {
    if(_selectCmd == null)
    {
    _selectCmd = new SqlCommand("SELECT guid, UserId, ModuleId, ModuleName, ViewRight, EditRight FROM pscpm_right");
    _selectCmd.Connection = new SqlConnection(DataCommon.ConnectionString);
    }
    return _selectCmd;
    }
      

  6.   

    更新就是sqldataadapter.update(dataset ds);
    关键是设定sqldataadapter的selectcommand,insertcommand,updatecommand,deletecommand属性,可以用sqlcommandbuilder自动生成,它生成的是全匹配更新的,也可以仿照它生成的写,如只根据主键更新