java - 如何在netbeans java中将图像插入mysql数据库

标签 java mysql netbeans

我对编程知之甚少。我需要将图像保存在 MySQL 数据库中。我已经创建了一个数据库表,并且有一列用于添加具有 longblob 数据类型的图像。 我有一个按钮的代码,可以从 PC 的文件夹中选择图像,然后将其加载到 jlable。现在我需要将此图像插入数据库。

这是我的代码;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JFileChooser fc=new JFileChooser(); 
    fc.showOpenDialog(this); 
    File f=fc.getSelectedFile(); 
    String path=f.getAbsolutePath(); 
    jLabel1.setIcon(new ImageIcon(path)); 

    try{ 
        FileInputStream fin=new FileInputStream(f); 
        int len=(int)f.length(); Class.forName("com.mysql.jdbc.Driver"); 

        Connection con=DriverManager.getConnection("jdbc:my­sql://localhost/hss", "root", "bis123"); 
        PreparedStatement ps=con.prepareStatement("Insert into profile values(?)"); 

        ps.setBinaryStream(1, fin, len); 
        int status=ps.executeUpdate(); 

        if(status > 0) { 
            jLabel2.setText("Successfully inserted in DB"); 
        }else{ 
            jLabel2.setText("Image not inserted!"); 
        } 
    }catch(Exception e){
        System.out.println(e); 
    }
}

最佳答案

在MySQL中,当我们使用blob类型存储数据时,它只支持5kb的图像容量。

创建表 image (

id varchar(45) 默认为空,

大小 int(11) 默认为空,

image 长斑

);

在上面的代码中创建了数据库表

这是在数据库中插入图片的java代码

import java.sql.*;
import java.io.*;
public class InsertImagesMysql{
public static void main(String[] args){
    System.out.println("Insert Image Example!");
    String driverName = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String userName = "root";
    String password = "root";
    Connection con = null;
    try{
       Class.forName(driverName);
       con = DriverManager.getConnection(url+dbName,userName,password);
       Statement st = con.createStatement();
       File imgfile = new File("pic.jpg");

      FileInputStream fin = new FileInputStream(imgfile);

       PreparedStatement pre =
       con.prepareStatement("insert into Image values(?,?,?)");

       pre.setString(1,"test");
       pre.setInt(2,3);
       pre.setBinaryStream(3,(InputStream)fin,(int)imgfile.length());
       pre.executeUpdate();
       System.out.println("Successfully inserted the file into the database!");

       pre.close();
       con.close(); 
    }catch (Exception e1){
        System.out.println(e1.getMessage());
    }
}
    }

这里是从数据库中获取数据的代码

import java.io.*;
import java.sql.*;
public class RetriveImagesMysql{
public static void main(String[] args){
    System.out.println("Retrive Image Example!");
    String driverName = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String userName = "root";
    String password = "root";
    Connection con = null;
    try{
        Class.forName(driverName);
        con = DriverManager.getConnection(url+dbName,userName,password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("select image from image");
        int i = 0;
        while (rs.next()) {
            InputStream in = rs.getBinaryStream(1);
            OutputStream f = new FileOutputStream(new File("test"+i+".jpg"));
            i++;
            int c = 0;
            while ((c = in.read()) > -1) {
                f.write(c);
            }
            f.close();
            in.close();
        }
    }catch(Exception ex){
        System.out.println(ex.getMessage());
    }
}
  }

这里只要把fin赋值给jbutton的action事件就会自动触发代码的运行

关于java - 如何在netbeans java中将图像插入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35410171/

相关文章:

java - 如何将 Map<String, Object> 反序列化为 POJO?

c# - 登录loginform并在form 2中看到

java - Android 自定义 View 未绘制且 Canvas 最大尺寸

php - 在php中检查带有空格的函数

mysql - 用于选择多条记录的 SQL 查询

java - 条件挑战

java - 我可以从 NetBeans 中的 Java 包调用 .mp3 或 .wav 文件吗?

mysql - 项目与数据库一起备份到可移动驱动器

java - "node = node.next"是什么意思?

java - 如何通过按 enter 退出 while 循环?