2016-02-15 2 views
2

У меня плохое знание о программировании. Мне нужно сохранить изображение в базе данных MySQL. Я создал таблицу базы данных, и есть столбец для добавления изображения с типом данных longblob. У меня есть код для выбора образа из папки на ПК, затем он загружается в jlable. Теперь мне нужно вставить это изображение в базу данных.Как вставить изображение в базу данных mysql в netbeans java

Это мой код;

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); 
    } 
} 

ответ

1

В MySQL, когда мы используем тип блоб для хранения данных, он поддерживает способность изображения только 5 кб.

CREATE TABLE image (

id VARCHAR (45) По умолчанию NULL,

size INT (11) По умолчанию значение NULL,

image LONGBLOB

);

создана таблица базы данных в коде выше

это 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()); 
    } 
} 
    } 

здесь просто назначить плавник jbutton action event автоматически запустит код кода

+0

Спасибо Smash. Я попробую это. – Ishani

Смежные вопросы