MySql——MySqlDataAdapter批量更新

 前言

  MySqlDataAdapter的Update方法不仅仅能够做到更新,还可以删除,添加,查看MySql支持C#的.dll库,会发现其实很多东西都继承实现了微软的那一套。

  因为在更改数据时会读到内存中,例如用DataTable存储 1,那么DataTable只是数据的副本。只要保证目标参数中的DataTable的行的状态对应增加、删除、更新等 2 就可以实现想要的结果 。

  通过调用SetAdded、Delete、SetModied等方法也可以改变DataTable行增删改状态,而MySqlDataAdapter的Update方法就根据行的状态去更新表,Added的就插入,Deleted的就删除、Modified的就更新

  需要注意的是,假如你希望删除掉一行数据,并且在调用Update方法后能够在数据库中更新删除掉对应的行,那就 不能调用Remove方法,其是直接从DataTable中删除记录,而不是将行的DataRowState变更为Deleted,想要实现上述操作,应调用Delete方法。而且在调用Update方法之前不能调用 AcceptChanges, 调用AcceptChangs方法后,所有 DataRowState不为Unchanged的行将被修改为Unchanged

 正文

  批量更新方法

public static int MultiUpateData(DataTable dtInfor)
{
    if (string.IsNullOrEmpty(dtInfor.TableName))
    {
        throw new Exception("DataTable.TableName is NULL.");
    }
    if (dtInfor.Rows.Count == 0)
    {
        return -1;
    }

    string sqlStr = string.Format("SELECT * FROM {0} WHERE FALSE", dtInfor.TableName);
    using (MySqlConnection con = new MySqlConnection(MySqlConnectString))
    {
        using (MySqlCommand cmd = new MySqlCommand(sqlStr, con))
        {
            con.Open();
            MySqlTransaction transction = con.BeginTransaction(IsolationLevel.ReadCommitted);
            try
            {
                int count = 0;
                MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd);
                dataAdapter.SelectCommand = new MySqlCommand(sqlStr, con);
                MySqlCommandBuilder builder = new MySqlCommandBuilder(dataAdapter);
                builder.ConflictOption = ConflictOption.OverwriteChanges;
                builder.SetAllValues = true;
                count = dataAdapter.Update(dtInfor);
                transction.Commit();
                dtInfor.AcceptChanges();
                dataAdapter.Dispose();
                builder.Dispose();
                return count;
            }
            catch (Exception)
            {
                transction.Rollback();
                throw;
            }
        }
    }
}

  1. 其实MySqlDataAdapter的Update方法直接受DataTable或者DataSet这样的参数 ↩︎

  2. 增加、删除、更新 分别对应DataRowState枚举的 Added、Deleted、Modified ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值