繁体   English   中英

错误-无法将类型为“ System.Byte []”的对象转换为类型为“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM