【问题标题】:How to insert image to mysql database in netbeans java如何在netbeans java中将图像插入mysql数据库
【发布时间】:2016-05-26 09:51:20
【问题描述】:

我对编程知之甚少。我需要将图像保存在 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); 
    }
}

【问题讨论】:

    标签: java mysql netbeans


    【解决方案1】:

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

    创建表image (

    idvarchar(45) 默认为空,

    sizeint(11) 默认为空,

    imagelongblob

    );

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

    这是在数据库中插入图像的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 动作事件,它将自动触发代码的运行

    【讨论】:

    • 谢谢粉碎。我会试试这个。
    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2013-08-31
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多