Hi Leutz.
Ich versuche ein Dokument/Bild in einer Postgres Datenbank als Large Object zu speichern(oid in der Datenbank).
Das klappt auch soweit.
Leider bekomme ich es nicht hin daraus wieder ein Dokument (in diesem fall ein Bild) zu erzeugen.
Ich habe vor Bilder und vor allen dingen PDF´s so zu speichern.
Hier mal mein Quellcode wie ich es speichere.
WIe schon gesagt ist alles nur mal zum testen.
Aber wie in 3 teufels namen mache ich aus dem ding wieder ein jpg ?!
Habe schon paar sachen ausprobiert die ich im Netz gefunden habe leider klappt es nicht mal ansatzweise
plz help!!
Ich versuche ein Dokument/Bild in einer Postgres Datenbank als Large Object zu speichern(oid in der Datenbank).
Das klappt auch soweit.
Leider bekomme ich es nicht hin daraus wieder ein Dokument (in diesem fall ein Bild) zu erzeugen.
Ich habe vor Bilder und vor allen dingen PDF´s so zu speichern.
Hier mal mein Quellcode wie ich es speichere.
Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.postgresql.PGConnection;
import org.postgresql.largeobject.LargeObject;
import org.postgresql.largeobject.LargeObjectManager;
public class SaveDocumentsInDB {
SaveDocumentsInDB() throws SQLException, IOException{
String user = "postgres";
String pw = "passwort";
String host = "localhost";
String database = "database";
String port = "5432";
Connection con = null;
try {
Class.forName ("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace ();
System.exit (1);
}
// Verbindung mit der Datenbank herstellen
try{
con = DriverManager.getConnection ("jdbc:postgresql:" + "//" + host + ":" + port + "/" + database ,user, pw);
} catch (SQLException e) {
e.printStackTrace ();
System.exit (1);
}
PGConnection pgconn = (PGConnection) con ;
con.setAutoCommit(false) ;
LargeObjectManager lom =
pgconn.getLargeObjectAPI( ) ;
long oid = lom.createLO( lom.READ ) ;
LargeObject lo = lom.open ( oid ) ;
File f2 = new File ( "C:\\Dokumente und Einstellungen\\All Users\\Dokumente\\Eigene Bilder\\Beispielbilder\\Winter.jpg" ) ;
FileInputStream fis2 = new FileInputStream ( f2 ) ;
while ( fis2.available() > 0 )
lo.getOutputStream().write( fis2.read( ) ) ;
lo.close( ) ;
PreparedStatement ps2 =((Connection) pgconn).prepareStatement (
"INSERT INTO Bilder " +
"( name, bildoid ) " +
"VALUES( ? , ? ) " ) ;
ps2.setString( 1 , "Winter.jpg" ) ;
ps2.setLong ( 2 , oid ) ; // The OID o f the LO
ps2.executeUpdate ( ) ;
ps2.close( ) ;
con.commit ( ) ;
con.setAutoCommit( true ) ;
con.close( ) ;
}
/**
* @param args
* @throws IOException
* @throws SQLException
*/
public static void main(String[] args) throws SQLException, IOException {
new SaveDocumentsInDB();
}
}
WIe schon gesagt ist alles nur mal zum testen.
Aber wie in 3 teufels namen mache ich aus dem ding wieder ein jpg ?!
Habe schon paar sachen ausprobiert die ich im Netz gefunden habe leider klappt es nicht mal ansatzweise
plz help!!