我有一个调用mysql存储过程的c#应用程序。这已经运行了2年没有问题。现在我使用最新的mysql db以及.net连接器进行了新的安装,我接下来一个错误。
发生第1次错误: 我收到错误消息" InvalidCast"。数据已正确插入。我发现,我必须添加"检查参数=跌倒"在连接字符串中。确实,这解决了问题,我得到了真正的错误:预期参数42,接收参数43.有趣的是,此时数据库中不再插入任何数据。 所以,这真的是一个错误,我更新了表和sp,因此它有43个参数
发生第二次错误: 现在我收到一个错误,告诉我无法转换整数。在我的数据库中,我有一些TinyInt字段。在c#中它是int。这些字段的值为1,2或3.然而,我无法再将它们插入到数据库中。在它运行之前。 所以我将db字段转换为INT。这解决了这个问题。但是发生了另一个错误
发生第3次错误:"错误的整数值:"无"对于专栏" p_myparam"在第220行。 为什么现在发生这种错误是一种谜。当然价值不是没有,它是142.我现在不知道在哪里搜索以及如何解决问题。
我必须注意,在我的旧电脑上,我有完全相同的数据库,具有相同的数据和相同的c#应用程序。它仍然没有问题。我真的很想知道如何突然插入TinyInt字段是不可能的,更糟糕的是我得到错误No.3。
如果有人有想法,我感谢任何帮助
感谢
答案 0 :(得分:0)
找到原因。在我的代码中,我有这样的陈述:
long returnID= (long) myCommand.ExecuteScalar();
使用以前版本的MySQL Server和.net连接器,这很好用。随着最新的升级不再。现在应该如下:
object returnID = myCommand.ExecuteScalar();
为什么需要这种改变,不知道。
最烦人的是ExecuteScalar给出的完全无用的错误消息。只是告诉转换在具有40多个参数的SP中不起作用没有帮助。