【问题标题】:Error-Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'错误 - 无法将“System.Byte []”类型的对象转换为“System.IConvertible”类型
【发布时间】:2014-09-12 11:06:20
【问题描述】:

我正在开发一个在 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();

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

【问题讨论】:

  • 听起来你必须实现接口?
  • @Noctis 不,它只是一种将数据插入 MySQL 表的方法。
  • 看来你正在寻找类似的东西stackoverflow.com/a/13208599/1328536
  • 看起来你想要的是用类似问题的参数创建一个查询。哦,Fuchs 好像也是这么说的

标签: c# mysql bytearray


【解决方案1】:

哇!!找到答案了。

经过测试的解决方案:

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

【讨论】:

  • @Noctis 感谢您的指导。 :)
  • @fuchs777 感谢您的指导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2021-12-07
相关资源
最近更新 更多