C# - SQL 数据库 - 发送查询以更新记录但是太多的更新请求导致一些被遗漏

标签 c# mysql sql updates

我到处搜索,如有遗漏,请见谅。

当我运行源代码时,没有出现任何错误,看起来一切正常,但是当我检查数据库时,只有一些记录被更新/添加,而其他记录被遗漏了。

目前的更新率在每秒 1 次到每秒 25 次之间变化(一些净空/以防万一,但通常在 15 次左右)。

在本节中,我查询数据库以提取现有值,对这些值进行调整,然后将其保存回数据库。

下面是更新 SQL 数据库的代码片段,大约有 43 列 正在更新(有些可能保持相同的值,但它们正在重新添加)。

有什么方法可以确保所有更新请求都通过并成功更新?

try
{
    MySqlCommand cmd2 = connection.CreateCommand();
    connection.Open();
    cmd2.CommandType = CommandType.Text;
    cmd2.CommandText = "UPDATE user_information SET exampleValue = @exampleValue WHERE username = @username";
    cmd2.Parameters.AddWithValue("@username", username);
    cmd2.Parameters.AddWithValue("@exampleValue", exampleValue);

    cmd2.ExecuteNonQuery();
    connection.Close();
}
catch (Exception ex)
{
    throw;
}
finally
{
    if (connection.State == ConnectionState.Open)
    {
        connection.Close();
        //this.LoadData();
    }
}

最佳答案

为了更好的比较,使用LTRIM & RTRIMLTRIM(RTRIM(username))SQLC# 中使用 String.Trim()usename.Trim()

LTRIM(RTRIM(username)) 将删除数据库中用户名的额外空格,例如。 ' Smith ' -> 'Smith' 和 username.Trim() 删除您输入的空格

所以你替换行

cmd2.CommandText = "UPDATE user_information SET exampleValue = @exampleValue WHERE username = @username";
cmd2.Parameters.AddWithValue("@username", username);

cmd2.CommandText = "UPDATE user_information SET exampleValue = @exampleValue WHERE LTRIM(RTRIM(username)) = @username";
cmd2.Parameters.AddWithValue("@username", username.Trim());

为避免区分大小写的比较,请使用 LOWERLOWER(username)SQLC# 中使用 String.ToLower() , 所以 username.ToLower()

现在,代码就是这样

cmd2.CommandText = "UPDATE user_information SET exampleValue = @exampleValue WHERE LOWER(LTRIM(RTRIM(username))) = @username";
cmd2.Parameters.AddWithValue("@username", username.Trim().ToLower());

关于C# - SQL 数据库 - 发送查询以更新记录但是太多的更新请求导致一些被遗漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194411/

相关文章:

c# - 何时删除 C# 中的定时器事件处理程序?

c# - AutoMapper:如何从 String 解析 Int 并可能根据数据类型创建规则?

c#-如果从静态构造函数调用静态事件有什么缺点

mysql - 在Docker上的Mysql中启用本地文件

php - 简单的 MySQL 语法错误

sql - Access 子表单源对象

c# - C#如何调用串口收到的数据

php - 将行添加到 HTML 表并随后添加到数据库

php - 在 mysql 查询中提供无效查询

sql - cfquery 文本编码问题