C# 调用 MySQL SP 过程不正确的整数值
本文关键字:整数 不正确 过程 调用 MySQL SP | 更新日期: 2023-09-27 17:56:18
我有一个调用mysql存储过程的c#应用程序。这运行了 2 年没有问题。现在我使用最新的 mysql db 以及 .net 连接器进行了新安装,但出现一个又一个错误。
发生第一个错误:我收到错误消息"无效投射"。数据已正确插入。我发现,我必须在连接字符串中添加"检查参数=瀑布"。确实,这解决了问题,我得到了真正的错误:预期参数 42,接收参数 43。有趣的是,此时数据库中不再插入任何数据。所以,这真的是一个错误,我更新了表格和sp,因此它有43个参数
发生第二个错误:现在我收到一个错误,告诉我无法转换整数。在我的数据库中,我有一些TinyInt的字段。在 c# 中,它是 int。这些字段的值为 1、2 或 3。尽管如此,我无法再将它们插入数据库。在它运行了无数次之前。所以我将数据库字段转换为 INT。这解决了问题。但是发生了另一个错误
发生第 3 个错误:"第 220 行"p_myparam"列的整数值不正确:"无"。为什么现在发生此错误是一个迷雾。当然,值不是没有,而是142。我现在不知道在哪里搜索以及如何解决问题。
我必须注意,在我的旧电脑上,我拥有完全相同的数据库,具有相同的数据和相同的 c# 应用程序。它仍在运行,没有问题。我真的想知道到底是如何突然插入 TinyInt 字段的,这是不可能的,更糟糕的是,我得到错误 3 号。
如果有人有想法,我感谢任何帮助
谢谢
找到原因。在我的代码中,我有这样的语句:
long returnID= (long) myCommand.ExecuteScalar();
使用以前版本的MySQL服务器和.net连接器,这工作正常。 没有最新的升级。现在应如下所示:
object returnID = myCommand.ExecuteScalar();
为什么需要这种改变,不知道。
最烦人的是ExecuteScalar给出的完全无用的错误消息。仅仅告诉转换在具有 40 多个参数的 SP 中不起作用是无济于事的。