gpt4 book ai didi

c# - ExecuteNonQuery 返回 1,即使更新语句没有影响任何行

转载 作者:行者123 更新时间:2023-11-29 03:45:50 26 4
gpt4 key购买 nike

我在这里遇到了一个很奇怪的问题。

我的 DAL 是使用 OdbcConnection 对象编写的,并且运行良好。

但是我必须遵守一些要求,因此不得不移动系统以使用 MySqlConnection

应该不会有任何问题,你会说吗。

但是,现在有一点误解:当我执行 UPDATE 命令时,没有输入任何新的详细信息(假设我将用户“test”的用户名更改为...“test "),command.ExecuteNonQuery() 无论如何都会返回 1。

对于以前的系统和 OdbcCommand 对象,如果没有字段更改,它返回 0。

这只是两个系统之间的基本区别,还是我在这里遗漏了什么?

即使是非常基础的代码也只是一些代码:

private readonly string _updateUserCommand =
"UPDATE user u " +
"JOIN city c ON c.Name=?City " +
"SET `City Id`=c.Id, u.Username=?Username WHERE u.Id=?Id";

// (...)

MySqlCommand command = null;
try
{
connection.Open();
//First step: storing the user in table user
//Creating the actual command:
command = new MySqlCommand(_updateUserCommand, connection);
command.Parameters.AddWithValue("?City", u.City);
command.Parameters.AddWithValue("?Username", u.Name);
command.Parameters.AddWithValue("?Id", u.Id);

int i = command.ExecuteNonQuery();
if (i != 0) return true;
else return false;
}

最佳答案

你的解释没有多大意义。如果您提供有效 ID 并对用户名进行更新,即使您更新为相同的名称,您也可以预期 1 行会受到影响。即有一行带有 userId

关于c# - ExecuteNonQuery 返回 1,即使更新语句没有影响任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com