MySQL-C#.NET开发Winform使用MySQL数据库 无法将“System.Byte[]”的对象强制转换为类型“System.IConvertible”

UI设计界面 UI设计界面 主题:1059 回复:2190

MySQL-C#.NET开发Winform使用MySQL数据库 无法将“System.Byte[]”的对象强制转换为类型“System.IConvertible”

泛泛之交 发布于 2017-07-21 字数 664 浏览 1206 回复 1

C#.NET 3.5开发winform程序,后台使用的是MySQL 5.1.x 数据库
从MySQL官网下的 mysql-connector-net-6.5.4,安装后在.NET里使用正常,使用MySqlConnection,MySqlCommand操作的数据库,自己写了一个MySqlHelper.cs,里面有一个执行MySqlCommand的方法用于更新数据

private const string connectString = "server=127.0.0.1;uid=root;pwd=root;database=dbname";
public static bool MysqlExcute(MySqlCommand cmd)
{
MySqlConnection conn = new MySqlConnection(connectString);
conn.Open();
cmd.Connection = conn;
int rtn = cmd.ExecuteNonQuery();
conn.Close();
return rtn > 0;
}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

夜无邪 2017-08-30 1 楼

问题已经解决。
错误出现在

 cmd.Parameters.Add("?pic_data", MySqlDbType.VarBinary).Value = imgByte;

这句话并没有调用

 public MySqlParameter Add(string parameterName, MySqlDbType dbType);

而是调用了

 public MySqlParameter Add(string parameterName, object value);

于是,MySqlDbType.VarBinary 被当成 "?pic_data" 的值传给cmd.Parameters,
.Value = imgByte再将 "?pic_data" 的值这个值覆盖为imgBtye
直接执行cmd.ExecuteNonQuery()由于没有指定 ?pic_data 的类型而报错
正确的做法是

 MySqlParameter param = new MySqlParameter();
param.MySqlDbType = MySqlDbType.VarBinary;
param.ParameterName = "?pic_data";
param.Value = imgByte;
cmd.Parameters.Add(param);