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:
- 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?
- 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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für das einfügen der PDF-Datei in die MySQL-Datenbank der folgende code scheint zu funktionieren gut für mich:
InformationsquelleAutor Gord Thompson
müssen Sie deklarieren Sie eine private variable vom Typ
Byte[](private byte[] usjerpdf = null;)
und ändern Sie Ihrepstmt.setBlob(4, userpdf)
zupstmt.setBytes(4, userpdf)
und es funktioniert gut.InformationsquelleAutor Herb21
InformationsquelleAutor regie
//Ich habe eine Tabelle Multipart die blob-Spalte PDF-Datei
//Unter einfachen code funktioniert es bestens. Ich bin übergeben die Liste von Dokumenten-IDS
InformationsquelleAutor Vaibhav