![](/img/trans.png)
[英]Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'
[英]Error-Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'
我正在开发一个在C#中的两个数据库之间传输数据的应用程序。 我有一种在MySQL中插入BLOB类型数据的方法。 在执行它时,我收到错误消息Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'.
码#
public static void FiletoSql(MemoryStream fileToPut, MySqlConnection con)
{
try
{
const string preparedCommand =
@"update user_account_statement set STATEMENT_FILE=@ssfile, create_date_time=@udatetime where statement_Id=1070";
using (var sqlWrite = new MySqlCommand(preparedCommand, con))
{
sqlWrite.Parameters.AddWithValue("@ssfile", MySqlDbType.Blob).Value = fileToPut.ToArray();
sqlWrite.Parameters.AddWithValue("@udatetime", MySqlDbType.DateTime).Value =
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
sqlWrite.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我没有得到确切的转换问题。
编辑 :我已经尝试过:
var fileData=new MySqlParameter("@ssfile",MySqlDbType.Blob,data.Length) {
Value = data
};
sqlWrite.Parameters.Add(fileData);
sqlWrite.Parameters.AddWithValue("@udatetime", MySqlDbType.DateTime)
.Value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
var cmd = sqlWrite;
sqlWrite.ExecuteNonQuery();
现在我收到错误输入字符串的格式不正确。
哇!! 得到了答案。
经过测试的解决方案:
public static void FiletoSql(MemoryStream fileToPut, MySqlConnection con)
{
byte[] data = fileToPut.ToArray();
try
{
const string preparedCommand =
@"update user_account_statement set STATEMENT_FILE=@ssfile, create_date_time=@udatetime where statement_Id=1070";
using (var sqlWrite = new MySqlCommand(preparedCommand, con))
{
sqlWrite.Parameters.Add("@ssfile", MySqlDbType.Blob);
sqlWrite.Parameters.Add("udatetime", MySqlDbType.DateTime);
sqlWrite.Parameters["@ssfile"].Value = data;
sqlWrite.Parameters["udatetime"].Value=DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
sqlWrite.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.