【问题标题】:Error converting data type int to tinyint将数据类型 int 转换为 tinyint 时出错
【发布时间】:2021-04-03 06:29:33
【问题描述】:

我是存储过程的新手。当我运行此程序时,我收到一条错误消息,提示将数据类型 int 转换为 tinyint 时出错。在我的 C# 中有以下代码:

mySqlcmd.CommandText = "EXECUTE PhoneNumber_Insert  @p_PhoneNumberTypeID, @p_PersonID";
mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = 1;
mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381";
mysqlConnection.Open();
mySqlcmd.ExecuteNonQuery();
mysqlConnection.Close();

【问题讨论】:

  • 1 转换为byte (mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = (byte) 1;)。让我知道它是否有效,我会写下来作为答案
  • 发布您的存储过程。定义。你可能有你的参数类型错误的方式....
  • @Flydog57 - 我这样做了,现在我得到了这个错误。
  • "PhoneNumber_Insert 需要未提供的参数 @PhoneNumberTypeId" mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value= (byte)1;
  • mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381"; 你为什么要把它作为字符串传递?

标签: c# mysql sql database stored-procedures


【解决方案1】:

您在 MySQL 连接器/NET 中遇到 bug 101302。有三种可能的解决方法:

  1. 更改您的代码以明确使用MySqlDbType.BytemySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", MySqlDbType.Byte).Value = 1;
  2. 降级到 MySql.Data 8.0.21。
  3. 切换到MySqlConnector,它支持与MySql.Data相同的API,但为less buggy

【讨论】:

  • @MitchWheat 这是各种数据类型都会出现的问题;查看重复的错误报告:bugs.mysql.com/bug.php?id=101424。该错误报告只是提供了BOOL 的复制步骤。
猜你喜欢
  • 2015-03-14
  • 2015-12-24
  • 2011-03-29
  • 2013-02-05
  • 1970-01-01
  • 2017-04-08
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多