使用 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。
我尝试过搜索同一问题的答案,但可能无法很好地表达它,因为它没有返回任何结果。
创建与 mysql 的连接时,在连接字符串中设置
UseAffectedRows
true。
根据手册,UseAffectedRows
当为 true 时,连接报告更改的行而不是找到的行。
此设置的默认值为
false
。