G
Gast
Gast
Hallo Leute!
Ich hab folgendes Problem, ich möchte von einer Sybase Datenbank in welcher Bilder gespeichert sind (IMAGE) die Binären IMAGE Daten auslesen und als BLOB in einer MYSQL speichern.
Ich hab bisher versucht die Binärdaten als String auszulesen und dann durch eine SQL CAST("String" AS BINARY)-Anweisung die Daten in die BLOB Spalte meiner MySQL DB zu speichern. Wenn ich dies so tue, bekomm ich keine Fehlermeldungen aber ich kann mir die BLOB-Daten nicht mehr als Bild ansehen.
Das Problem liegt da, dass Sybase keinen BLOB-Datentyp kennt und diesen auch nicht unterstützt. Darum hab ich es versucht folgendermaßen zu lösen:
//Selektiere Daten aus Sybase DB
....
//Schreibe Daten in MySQL
Wenn ich den Quellcode so ausführe, bekomm ich aber immer folgende Fehlermeldung:
java.io.IOException: JZ0I9: Dieser InputStream wurde bereits geschlossen.
Hat irgend jemand eine Idee woran das liegen könnte? Oder bin ich auf diese Art und Weise komplett auf dem Holzweg, wenn ja, gibt es vielleicht eine andere Möglichkeit?
Ich bin für jede Hilfe dankbar.
Gruss
Markus
Ich hab folgendes Problem, ich möchte von einer Sybase Datenbank in welcher Bilder gespeichert sind (IMAGE) die Binären IMAGE Daten auslesen und als BLOB in einer MYSQL speichern.
Ich hab bisher versucht die Binärdaten als String auszulesen und dann durch eine SQL CAST("String" AS BINARY)-Anweisung die Daten in die BLOB Spalte meiner MySQL DB zu speichern. Wenn ich dies so tue, bekomm ich keine Fehlermeldungen aber ich kann mir die BLOB-Daten nicht mehr als Bild ansehen.
Das Problem liegt da, dass Sybase keinen BLOB-Datentyp kennt und diesen auch nicht unterstützt. Darum hab ich es versucht folgendermaßen zu lösen:
//Selektiere Daten aus Sybase DB
....
Code:
rs = stmtSel.executeQuery();
id = attributs.getId();
if(rs.next()){
attributs.setId(rs.getInt("attachment_id"));
attributs.setInputStream(rs.getBinaryStream("data"));
fillBinary(BINARYDATA_INS, attributs);
}
Code:
public void fillBinary(String qryIns, Attributs attributs) throws ClassNotFoundException, SQLException, NoDataContainedException, IOException{
conMySQL = DBConnection.dbMysql(DBConnection.MySQLURL);
PreparedStatement stmtIns = conMySQL.prepareStatement(qryIns);
if((attributs.getInputStream() == null)){
throw new NoDataContainedException("No Datas contained in the column 'Data'");
}
stmtIns.setInt(1,attributs.getId());
stmtIns.setInt(1,attributs.getId());
byte[] buff = new byte[8000];
int len;
while( 0 < (len = attributs.getInputStream().read( buff )) )
stmtIns.setBinaryStream(2,attributs.getInputStream(),len );
stmtIns.executeUpdate();
conMySQL.close();
}
Wenn ich den Quellcode so ausführe, bekomm ich aber immer folgende Fehlermeldung:
java.io.IOException: JZ0I9: Dieser InputStream wurde bereits geschlossen.
Hat irgend jemand eine Idee woran das liegen könnte? Oder bin ich auf diese Art und Weise komplett auf dem Holzweg, wenn ja, gibt es vielleicht eine andere Möglichkeit?
Ich bin für jede Hilfe dankbar.
Gruss
Markus