2

我有一个问题,即使经过数小时的调试,我也显然无法找到解决方案。

我有一个简单的 SQL 命令,我想用某个值更新一行(该值是约 5mb 的文本),在执行 SQL 命令后,C# 代码端的“ExecuteNonQuery()”返回“1”也不例外,但更改有时会反映在数据库行中,有时不会。

我尝试调试以查看将替换旧值的值是否正确并且它们是正确的。我正在使用 MySQL 5.5.11。

  • 可能是 MySQL 设置或其他什么?

对这个问题失去理智,如果您有任何想法,将不胜感激。

编辑,包括代码:

代码很简单:

cmd.CommandText = "UPDATE user SET data = @data WHERE id = @id";

然后我将参数添加到 SQL 查询的 DBCommand 对象。“数据”大约是 5mb 大。

即使更改未反映在数据库中,此命令也始终返回“1”(有时有效,有时无效):

cmd.ExecuteNonQuery();

提前致谢!

4

3 回答 3

1

不知道mysql提供者有没有使用autocommit?如果不是,那么您必须在 Transaction 对象上调用 commit,您可以在连接对象上使用 BeginTransaction 获得。

于 2012-06-10T21:43:14.513 回答
0

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

用于 SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?) 占位符用于将参数传递给 SQL 语句或由CommandType.Text. 在这种情况下,必须使用命名参数。

例如:

SELECT * FROM Customers WHERE CustomerID = @CustomerID 

编辑: 刚刚注意到这是 MySQL,虽然我找不到任何类似的东西,但我还是建议你使用命名参数

于 2012-06-10T18:45:30.617 回答
0

我遇到了这个问题,它与自动提交有关。

问题:在应用程序生命周期的早期自动提交被应用程序中的另一个进程设置为 0,并且失败。关闭自动提交的连接然后被连接池重用。

这将在不可预测的时间导致这种类型的错误。

于 2015-09-21T00:14:33.637 回答