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.
 

Neue Beiträge

Zurück