使用Java在MySQL中存储图像

时间:2011-12-29 04:04:06

标签: java mysql image webpage

我想使用Java applet将图像存储到MySQL数据库中,或者在运行时用户将加载图像。

我该怎么做?

请帮帮我。是否需要使用任何特殊的基于Java的MySQL,或者MySQL是否只需要加载BLOB图像内容?如果可能的话,给我一些代码示例,并提一下如何为此目的将MySQL加载到我的计算机上。

执行此操作后,我想将mysql中的图像显示在网页上。

真的有可能吗?

怎么做?

4 个答案:

答案 0 :(得分:5)

你不应该在MySQL中存储图像。 MySQL不是为了存储BLOBs而设计的,如果你这样做会受到严重的性能下降。

您可以而且应该在本地文件服务器或远程服务器(如Amazon S3)上存储指向图像的指针。

如果你真的想在我发出警告的情况下这样做,你可以找到一些sample code here,尽管在那里会彻底讨论自我相同的警告。

答案 1 :(得分:0)

您可以在java中使用setBinaryStream()将图像存储到mysql的 blob 数据类型列

File image = new File("C:/image.jpg");
PrepareStatement psmnt = connection.prepareStatement
("insert into save_image(image) "+ "values(?)");

FileInputStream fis = new FileInputStream(image);
psmnt.setBinaryStream(3, (InputStream)fis, (int)(image.length()));
/* executeUpdate() method execute specified sql query. Here this query 
insert data and image  */ 
int s = psmnt.executeUpdate();

见下面的教程 How to insert Image in MySQL using Java Program

答案 2 :(得分:0)

try {
            File image = new File("C:/honda.jpg");
            inputStream = new FileInputStream(image);
            connection = getConnection();
            statement = connection
                    .prepareStatement("insert into trn_imgs(img_title, img_data) "
                            + "values(?,?)");
            statement.setString(1, "Honda Car");
            statement.setBinaryStream(2, (InputStream) inputStream,
                    (int) (image.length()));

            statement.executeUpdate();
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: - " + e);
        } catch (SQLException e) {
            System.out.println("SQLException: - " + e);
        }

答案 3 :(得分:0)

正如Josh Smith建议你不要在MySQL中使用BLOB或LONGBLOB存储图像。因为它会对您的表现产生巨大影响,您可以通过following this method来完成。 而不是将图像直接存储到数据库中,而是将图像位置存储在数据库中。在比较这两个选项时,将数据存储在数据库中是安全的,以确保安全。缺点是

  1. 如果数据库已损坏,则无法检索。
  2. 与其他选项相比,从db检索图像文件的速度很慢。
  3. 在db中存储图像文件位置具有以下优点。

    1. 很容易找回。
    2. 如果存储了多个图像,我们可以轻松检索图像 信息。