2

我在 SQL 2008 Enterprise 中有一个名为 Student_Images 的表,其中 S_Images 列名的数据类型是图像。现在如何将图像插入数据库。我在 google 上搜索并访问了 50 多个网站,有人说将其转换为 Base64,有人说将其转换为字节等,但如果列类型是图像,那该怎么办。请指导我。

4

4 回答 4

2

请不要这样做。数据库不是文件系统。创建一个包含文件名的列并将图像存储在文件夹中。

于 2012-08-02T14:03:28.023 回答
1

查看 JDBC API Javadocs。您必须创建一个 Blob 对象,填写文件中的数据,然后将其用作(准备好的)语句的列。就像任何其他数据类型一样工作,只需多几行代码即可创建 Blob。

这是教程如何开始的链接。

与其他答案不同,某些情况下,将二进制数据存储在数据库中最适合需求。仅存储对文件系统的引用可能会给备份带来严重的麻烦,并且还会出现可访问性问题(仅仅因为您可以连接到数据库并不意味着您可以访问文件所在的文件系统)。

于 2012-08-02T14:19:43.143 回答
1

您不应该将图像存储在数据库中。正如第一条评论所指出的,这将占用大量空间。更推荐存储路径和文件名。

我想也许你没有在stackoverflow中搜索正确的方法,你对这个主题有一个很好的答案

还有一件事。您的问题全部大写,避免这种情况,很难阅读,因此您的答案会更少。

于 2012-08-02T14:03:11.347 回答
0

是的。

  • 如果图像大小很大,那么最好创建图像的元数据,将其引用保存到数据库中,并将真实图像保存在磁盘上。这比将图像保存在数据库中要快得多。
  • 当您的图像尺寸较小时,将图像保存在数据库中很好

如果你想测试它,看看它是如何工作的。获取任何类型的图像并将其转换为字节数组流,如下所示:

BufferedImage originalImage = ImageIO.read(new File(
        "resources/image/Test.png"));

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
  • 创建 blob 列以将数据保存在表中
  • 执行插入语句将数据插入表中。
于 2014-04-06T16:01:13.950 回答