c# - 使用图像作为数据库表列

标签 c# sql sql-server collections

我有一个数据库 (sql server 2008),我在 visual studio 2010 中使用 c#。

我想与我的数据库建立连接。我为此编写了如下代码:

    SqlConnection mySqlConnection = new SqlConnection
    ("Data Source=servername\\SQL2008; Initial Catalog=MyData;UID=MyID;PWD=mypassword;");

    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
    mySqlCommand.CommandText = "SELECT image_column FROM images_table ";

    mySqlConnection.Open();

    SqlDataReader productsSqlDataReader = mySqlCommand.ExecuteReader();

我不知道如何进行下一步。我的意思是执行上述语句后如何从阅读器中提取列?此外,我需要逐行浏览整个列并将每个图像转换为 IContent 项目。我是否必须为此编写自己的转换器,或者是否有任何 .NET 类已经执行此操作?

这是场景。我有一个包含 20 列的表格,其中一列是 images_column。该列是唯一将图像存储为二进制数据的列。其余列通常是与该特定图像关联的整数(其大小值)和字符串(其名称、位置等)。我希望现在一切都清楚了。

谢谢。

最佳答案

根据您在数据库中保存图像的方式,您可以使用 Bitmap 提取它们类(class)。它的构造函数需要几个不同的参数,例如 Stream。

您可以使用其 Read 从阅读器获取数据功能。它给你一个 bool 值,让你知道你是否有有效的行。您可以在 if 语句或 while 语句中使用它。

例如,将数据库列中的数据提供给 MemoryStream,然后将其提供给 Bitmap 构造函数。

while (productsSqlDataReader.Read()) {
    MemoryStream stream = new MemoryStream((byte[])productsSqlDataReader["image_column"]);
    new Bitmap(stream);
}

关于c# - 使用图像作为数据库表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3971523/

相关文章:

c# - 如何将 MDI 子窗体带到前面?

c# - 限制集合中的对象基于用户序列化

sql - 可能的索引损坏?

asp.net - 在 SQL SERVER 2005 上启用 CLR 是否存在任何安全问题?

c# - 将 customDimensions 拆分为 3 个 json,然后使用 kusto 查询进行项目

C# => 运算符?

sql - VBA Access 中的动态计算字段

sql - postgresql中的双外键

sql - 将聚簇索引应用于 SQL Server 2012 中的 View

sql-server - TSQL 分组数据集