【问题标题】:How to insert images into SQL Database in VS C#如何在 VS C# 中将图像插入 SQL 数据库
【发布时间】:2020-12-12 20:31:59
【问题描述】:

所以我有一个我在网上找到的迷你项目,它几乎是用 C# 创建一个交易卡浏览软件。 我在 VS Windows 窗体中使用服务器资源管理器创建了一个带有表的数据库,名为 Trading_Cards_DT,其中有一个名为 Trading_Cards 的表

Create Table Trading_Card_Info(
    ID int,
    fullName varchar(30),
    HP int,
    Attack int,
    Resources int,
    TypeCreature varchar(30),
    Faction varchar(30),
    Color nvarchar(20),
    Picture Image
);

这是我要实现的表中的列,我也开始向表中插入数据,但我不知道如何插入图像,然后将所有这些数据检索回 Windows 窗体 布局。

我想在 Forms 中使用 listBox 来仅显示列表中角色的名称,并在选择时显示关于他的所有数据,而不仅仅是显示成员、值成员和选定值。

我使用了这个视频:https://www.youtube.com/watch?v=arA-3z49g8U 要学习基础知识,但我还想做更多,但我找不到一个资源来告诉我如何将图像最初存储在数据库中,然后在 C# 中检索它。

【问题讨论】:

  • 您能否进一步详细说明您当前是如何插入数据的,尤其是在您使用任何数据访问层框架的情况下?另外,您目前如何想象将图像等数据存储到数据库中的概念可以实现?
  • 来自documentation:“重要! ... (the) image 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用 ... (this) 数据类型,并计划修改当前使用 (it) .... 的应用程序。改用 ... varbinary(max)。"
  • 添加到sticky bit 的评论中,image 数据类型自 SQL Server 2005 以来已被弃用 - 所以真的不要使用它。如果您进行简单的 Google 搜索 "varbinary(max)" "JPEG" site:stackoverflow.com,您会发现大约 500 个问题,这些问题演示了如何在 SQL Server 数据库中写入和读取图片数据。我建议添加一列来描述图片数据的格式(bmp、gif、jpeg、png 等),这样您就不必对二进制数据进行签名嗅探,以便在读取时找到要使用的正确图像解码器返回。
  • @AlwaysLearning 你不需要。例如,Image image = Image.FromStream(new MemoryStream([The Byte Array]));。现在,image.RawFormat 具有引用位图格式的 Guid。 ImageFormat 也有文件扩展名信息。你可以用 BitmapSource 做同样的事情。
  • @Jimi System.Drawing.Image 对图形格式的支持极为有限。它甚至不支持 JPEG-2000 和 HEIF,更不用说像 FITS(天文学)和 TGA(在游戏创作中仍然很常见)这样的“晦涩”格式。

标签: c# sql-server winforms


【解决方案1】:

SQL Server 中的Image 数据类型已弃用并将被删除。因此,您应该避免使用它。

最常用的方法之一是存储图像的路径和文件名,并将文件保存在文件系统中。如果您确实必须将图像文件存储在表中,则另一种方法是将其存储为 VARBINARY 数据类型。我建议你check this post out,它也链接到微软研究关于这个主题的论文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多