wie Sie einfügen und abrufen von pdf-Dokument aus blob mit Java

Ich versuche zu bauen, einige Java-code, die JDBC verwendet:

1) Legen Sie eine PDF-Datei in ein longblob Spalte in MySQL und den Dateinamen in eine varchar Spalte.

2) Abrufen einer PDF-Datei über den Dateinamen (man bedenke es ist der primary key) und dem Benutzer anzeigen.

Da ist klar, von oben, meine Tabelle hat zwei Spalten:

filename  pdf_file 
--------  ---------
stock     stock.pdf 
kids      kid.pdf 

Hier ist der code, den ich geschrieben habe:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog(null);
        File f = chooser.getSelectedFile();
        String filename = f.getAbsolutePath();
        path = filename;
         newpath = path.replace('\\', '/');
    }                                        


 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        try{
        File newpdf = new File(newpath);
        FileInputStream fis = new FileInputStream(newpdf);
        ByteArrayOutputStream baos= new ByteArrayOutputStream();
        byte[] buff = new byte[2048000];
        for(int readNum; (readNum=fis.read(buff)) !=-1 ; ){
            baos.write(buff,0,readNum);
        }

        userpdf=baos.toByteArray();


    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
 PreparedStatement pstmt = null;

        try{
             Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ppl","root","");
             String proj_name = JOptionPane.showInputDialog("Please enter name of the file");
             /*
             String insert = "INSERT INTO project VALUES ('" + login.admission + "','" + login.yr + "','" + proj_name + "','" + userpdf + "')";

             java.sql.PreparedStatement pst = con.prepareStatement(insert);
             pst.executeUpdate(insert);*/

             String sql = "INSERT INTO project"+"VALUES (?,?,?,?)";


        pstmt = (PreparedStatement) con.prepareStatement(sql);
        pstmt.setString(1, login.admission);
        pstmt.setString(2, login.yr);
        pstmt.setString(3, proj_name);
        pstmt.setBlob(4, userpdf); //This line has an error may be because of userpdf.Plz //suggest

        pstmt.executeUpdate();


        JOptionPane.showMessageDialog(null, "Saved");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    } 

Den Problemen bin ich konfrontiert sind:

  1. Wenn ich einfügen eine PDF-Datei, 175 kb, die MySQL-Tabelle zeigt, dass es die Größe ist, 10 oder 11 bytes. Warum ist das passiert?
  2. Wenn ich versuche zum abrufen der PDF-Datei bekomme ich eine Meldung, dass es beschädigt ist. (Ich habe nicht im Lieferumfang enthalten Abruf-code.)

Bitte erklären, mit dem obigen Szenario, so wie ich bin ein Neuling in Java. Warum ist es, mein gesamtes pdf ist nicht in der mysql Tabelle?

InformationsquelleAutor Sam Ray | 2014-03-21

Schreibe einen Kommentar