T
Tallan82
Hallo zusammen ich habe folgendes Problem.
Ich möchte eine PDF Datei in einer mysql datenbank abspeichern.
Das funktioniert soweit ich das beurteilen kann auch ohne probleme.
Nun frage ich aus einem cleint diese Daten wieder ab und möchte daraus wieder eine pdf Datei erstellen.
Mein Problem ist nun das ich nicht weiter komme..
Die Binärdaten der pdf datei liegen im Label "c" sind also per rs.getObject("c"); erreichbar
rs.getObject("c");
File f = (File) rs.getObject("c");
liefert allerdings :
Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.io.File
at tests.dbtest.<init>(dbtest.java:59)
at tests.dbtest.main(dbtest.java:83)
Brachte leider nur eine defekte pdf datei hervor die ich nicht anzeigen konnte.
Weiß jemand weiter ?
Ich möchte eine PDF Datei in einer mysql datenbank abspeichern.
Code:
//dbc ist die DBConnection cn die instance
java.sql.PreparedStatement pst = dbc.cn.prepareStatement("INSERT INTO attachment (a, b, c, d) VALUES ( ?, ?, ?, ?)");
File file = new File("Z:\\test2.pdf");
pst.setInt(1, 2);
pst.setString(2, file.getName());
pst.setBinaryStream(3, new FileInputStream(file), (int)file.length());
pst.setString(4, "application/pdf");
pst.execute();
Das funktioniert soweit ich das beurteilen kann auch ohne probleme.
Nun frage ich aus einem cleint diese Daten wieder ab und möchte daraus wieder eine pdf Datei erstellen.
Code:
dbc = dbc.getInstance();
java.sql.PreparedStatement st = dbc.cn.prepareStatement("SELECT * FROM attachment");
ResultSet rs = st.executeQuery();
rs.next(); // rs ist jetzt der inhalt der db zeile
Mein Problem ist nun das ich nicht weiter komme..
Die Binärdaten der pdf datei liegen im Label "c" sind also per rs.getObject("c"); erreichbar
rs.getObject("c");
File f = (File) rs.getObject("c");
liefert allerdings :
Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.io.File
at tests.dbtest.<init>(dbtest.java:59)
at tests.dbtest.main(dbtest.java:83)
Code:
FileOutputStream fos = new FileOutputStream("Z://demo.pdf");
ByteArrayInputStream in = (ByteArrayInputStream) rs.getBinaryStream("c");
byte nextByte;
while ( ( nextByte = (byte) in.read() ) != -1 ){
fos.write(nextByte);
}
Brachte leider nur eine defekte pdf datei hervor die ich nicht anzeigen konnte.
Weiß jemand weiter ?