【问题标题】:Store Bitmap converted to byte array in Varbinary(MAX) or Image data type of SQL Server在 SQL Server 的 Varbinary(MAX) 或 Image 数据类型中存储位图转换为字节数组
【发布时间】:2014-04-15 18:46:43
【问题描述】:

我想将图像存储在 SQL Server 数据库中。我已将图像转换为字节数组,数据库中列的数据类型为varbinary(MAX),但即使我将其类型更改为Image,它也不起作用,但我得到了相同的结果。

我已经关注了来自 stackoverflow、代码项目、代码中的梦想的许多链接,但找不到我的解决方案,我的代码用于在数据库中插入字节数组

string query = @"INSERT INTO myTable (ID, byteArray, DateTime) VALUES (@ID, @byteArray, @datetime)";

try
{
      command = new SqlCommand(query, base.conn);
      command.Parameters.AddWithValue("@ID", id);
      command.Parameters.AddWithValue("@byteArray", ss); // ss is byte[] from arguments
      command.Parameters.AddWithValue("@datetime", DateTime.Now);

      base.Open();
      if (command.ExecuteNonQuery() > 0)
      {
            base.Close();
            return true;
      }
      else
      {
             base.Close();
             return false;
      }
}
catch (SqlException ex)
{
      base.Close();
      return false;
}

我也试过了

command = new SqlCommand(query, base.conn);
command.Parameters.Add("@ID", id);
command.Parameters.Add("@byteArray", ss); // ss is byte[] from arguments
command.Parameters.Add("@datetime", DateTime.Now);

以及它将存储在数据库中的东西

但它会将第三列中的值显示为<Binary data> 那是什么???

【问题讨论】:

  • @marc_s,这就是答案,如果你按原样发布,我会赞成的。

标签: c# sql-server bytearray varbinary varbinarymax


【解决方案1】:

当某些二进制数据(如图片)存储在该列中时,SQL Server Management Studio 将显示<binary data>。这是按设计工作

您实际上不会在 SQL Server Management Studio 中看到图片本身。我很确定您的代码可以正常工作 - 只是您对 Management Studio 的期望太高了....

【讨论】:

  • 但是我如何检索它以便我可以在位图中进行转换
  • @assassino:您只需对SELECT 数据使用标准查询并将其作为字节数组/流返回到您的.NET 应用程序,然后您可以将其输入Bitmap 类...但这又是一个完全不同的问题!
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多