将数据类型 int 转换为 tinyint 时出错

Posted

技术标签:

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

我是存储过程的新手。当我运行此程序时,我收到一条错误消息,提示。在我的 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"; 你为什么要把它作为字符串传递? 【参考方案1】:

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

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

【讨论】:

@MitchWheat 这是各种数据类型都会出现的问题;查看重复的错误报告:bugs.mysql.com/bug.php?id=101424。该错误报告只是提供了BOOL 的复制步骤。

以上是关于将数据类型 int 转换为 tinyint 时出错的主要内容,如果未能解决你的问题,请参考以下文章

将数据类型 NVarchar 转换为 int 时出错

将数据类型 varchar 转换为日期时将 int 年份转换为字符串时出错

将 nvarchar 转换为数据类型 int 时出错

在计算 SUM 之前过滤列(错误:将数据类型 varchar 转换为 int 时出错)

将 JSON 对象脱盐到数据表时将值“1D”转换为类型“System.Int64”时出错

tinyint用java转化为int的坑