【发布时间】: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