ASP.NET MySQL更新多条记录

标签 asp.net mysql transactions

我有一个网页需要更新多条记录。此页面获取所有信息,然后开始向数据库发送多个 UPDATE 查询的事务。

foreach row
{
Prepare the query
 Hashtable Item = new Hashtable();
 Item.Add("Id", Id);
 Item.Add("Field1", Field1);
 Item.Add("Field2", Field2);
 Item.Add("Field3", Field3);
...
}

然后我们启动 ytransaction 进行更改()

public void execute_NonQuery_procedure_transaction(string StoredProcedure, List<Hashtable> Params)
{
    using (MySqlConnection oConnection = new MySqlConnection(ConfigurationManager.AppSettings[DB]))
    {
        MySqlTransaction oTransaction;
        bool HasErrors = false;

        oConnection.Open();
        oTransaction = oConnection.BeginTransaction();

        try
        {
            MySqlCommand oCommand = new MySqlCommand(StoredProcedure, oConnection);
            oCommand.CommandType = CommandType.StoredProcedure;
            oCommand.Transaction = oTransaction;

            foreach (Hashtable hParams in Params)
            {
                oCommand.Parameters.Clear();

                IDictionaryEnumerator en = hParams.GetEnumerator();
                while (en.MoveNext())
                {
                    oCommand.Parameters.AddWithValue("_" + en.Key.ToString(), en.Value);
                    oCommand.Parameters["_" + en.Key.ToString()].Direction = ParameterDirection.Input;
                }

                oCommand.ExecuteNonQuery();

            }
        }
        catch (Exception e)
        {
            HasErrors = true;
            throw e;
        }
        finally
        {
            if (HasErrors) 
                oTransaction.Rollback();
            else
                oTransaction.Commit();

            oConnection.Close();
        }
    }
}

是否还有其他方法可以做到这一点,或者这是最有效的方法?

最佳答案

这取决于具体情况,比如如果您有多个行更新或添加新行或删除某些行或这些行的组合,这会修改数据库表,那么有效的方法是批量更新。 .

请点击此链接Batch Update

希望这有帮助...

关于ASP.NET MySQL更新多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579421/

相关文章:

c# - ConnectionString 中未指定 OLE DB 提供程序。 '供应商= SQLOLEDB;

php - 根据函数获取mysql表列的值

java - 为 hibernate 和@Transactional 配置 spring 数据源

sql - 如何在对某些 SQL 行运行进程时锁定它们?

javascript - ClientScript.RegisterStartupScript 不工作

javascript - 如何知道 asp.net ajax 请求何时完成?

asp.net - 更改 Web.config 连接字符串而不重置 session

Javascript 与 php 和 mysql 空值冲突(语法)

php - HTML POST 表单不向 PHP 脚本发送任何数据

mysql - @Never 事务属性非常慢