C# - ExecuteNonQuery 不会在带有 ON DUPLICATE 子句的 INSERT 上返回正确的受影响行

问题描述 投票:0回答:1

使用 HeidiSQL,我使用此查询更新具有多个重复项的表:

INSERT INTO ach_progress (user_id, app_id, ach_name, unlock_time) 
VALUES  (123456, 123456, '3', '2024-04-23 13:59:31'), 
        (234567, 234567, '4', '2024-04-23 15:05:36') 
ON DUPLICATE KEY UPDATE ach_name = ach_name

它返回“0 个受影响的行”。

在 C# 中使用相同的查询(在 .NET Core 3.1 应用程序中使用 MySQL 连接器 8.0.23):

public static int Insert(string s_Query)
{
    int i_Result = 0;
    using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString))
    {
        using (MySqlCommand myCommand = new MySqlCommand(s_Query, conn))
        {
            conn.Open();
            i_Result = myCommand.ExecuteNonQuery();
        }
    }
    return (i_Result);
}

我得到 i_Result = 尝试插入的次数。

不幸的是,我需要知道我是否为程序的其余部分插入了行。

直接运行查询可以工作,但问题似乎源于 ExecuteNonQuery。

我尝试过搜索同一问题的答案,但可能无法很好地表达它,因为它没有返回任何结果。

c# mysql-connector on-duplicate-key
1个回答
0
投票

创建与 mysql 的连接时,在连接字符串中设置

UseAffectedRows
true。

根据手册,UseAffectedRows

当为 true 时,连接报告更改的行而不是找到的行。

此设置的默认值为

false

© www.soinside.com 2019 - 2024. All rights reserved.