错误 - 无法将类型为“System.Byte []”的对象转换为“System.IConvertible”类型

时间:2014-09-12 11:06:21

标签: c# mysql bytearray

我正在开发一个应用程序,用于在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();

现在我收到错误输入字符串的格式不正确。

1 个答案:

答案 0 :(得分:0)

哇!!得到了答案。

经过测试的解决方案:

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());
        }
    }