PDF Datei in mysql tabelle schreiben und wieder herstellen

  • Themenstarter Themenstarter Tallan82
  • Beginndatum Beginndatum
T

Tallan82

Hallo zusammen ich habe folgendes Problem.

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 ?
 
Irgendwie kann ich mich an eine solche Frage hier im Forum erinnern. Benutz doch bitte mal die Suche im Forum und schau ob du damit eine Hilfe bekommst.
 
Zurück