将访问数据库中的图像挖掘到网格视图中

Mining an image out of an acess database into a GridView

我正在构建一个支持 Microsoft Access 数据库的 ASP.Net Web 应用程序。在数据库中,我有一个名为 items 的 table。其中一列是 image - 这是项目的视觉表示,它是数据库计算机上图像的超 link。

我有两个问题:

首先,这是一个糟糕的设计吗?您愿意将图像本身保存在数据库中吗?如果是,你会怎么做?

第二个问题是,如何在 gridView 中表示以这种方式保存的图像?

我在 C# 中尝试了以下内容;

用 OleDb 命令填充数据集:

SELECT ItemName as Name,ItemPicture as Picture...

并将其设置为GridView的源,但遗憾的是,它只是在网格中写出了hyperlink: 1.jpg#1.jpg# 而不是显示图像。

你会怎么做?

Is this a bad design

一般来说,不会。

关于在数据库中将图像存储为 BLOB 与使用 OS 文件系统的主题有很多白皮书。您必须进行研究以确定哪个适合您。但鉴于您使用的是 Access,我会避免将图像存储在数据库中,因为 Access 对数据库的整体文件大小有 2GB 的上限。图片可以很快填满。

假设图像字段是关联文件的相对路径,您所要做的就是将 ImageField 添加到 Gridview 并将图像 URL 字段绑定到DataImageURLField 属性.

<asp:ImageField DataImageUrlField='<%# Bind("Picture") %>'></asp:ImageField>

这假定您的 ItemPicture 字段包含类似于以下的字符串:“/images/1.jpg”。如果图像字段实际上是一个超链接(html <a> 标记),那么您可以将 TemplateField 添加到 Gridview 并在 ItemTemplate 中添加一个 ` 控件并类似地绑定它:

<asp:TemplateField>
  <EditItemTemplate>
  </EditItemTemplate>
  <ItemTemplate>
    <asp:Literal ID="Literal1" runat="server" Text='<%# Bind("Picture") %>'
  </ItemTemplate>
<asp:TemplateField>