Hallo, hab schon wieder ein kleines Problem mit den lieben Blobs…
Ich speichere mit folgendem Code Dateien in der DB (Oracle 9.2):
System.out.println("methodListXml: " + methodListXml.length);
System.out.println("wsdlEdit: " + wsdlEdit.length);
try {
logger.info("UPDATE TBLSERVICE SET "
+ "METHODLISTXML = ? WHERE (SERVICENAME = '" + serviceName + "')");
PreparedStatement pstmt = dbConnection.connection.prepareStatement("UPDATE TBLSERVICE SET "
+ "METHODLISTXML = ? WHERE (SERVICENAME = '" + serviceName + "')");
// pstmt.setBytes(1, methodListXml);
pstmt.setBinaryStream( 1, baisMethodListXml, methodListXml.length );
pstmt.executeUpdate();
pstmt.close();
} catch (BatchUpdateException e) {
logger.error(message2 + e.getMessage());
} catch (SQLException e) {
logger.error(message1 + e.getMessage());
}
try {
logger.info("UPDATE tblService SET "
+ "WSDL = ? WHERE (SERVICENAME = '" + serviceName + "')");
PreparedStatement pstmt = dbConnection.connection.prepareStatement("UPDATE tblService SET "
+ "WSDL = ? WHERE (SERVICENAME = '" + serviceName + "')");
// pstmt.setBytes(1, wsdlEdit);
pstmt.setBinaryStream( 1, baisWsdl, wsdlEdit.length );
pstmt.executeUpdate();
pstmt.close();
} catch (BatchUpdateException e) {
logger.error(message2 + e.getMessage());
} catch (SQLException e) {
logger.error(message1 + e.getMessage());
}
Die eine Datei (819 Bytes) wird problemlos gespeichert. Die andere (27 KBytes) leider nicht. Ich bekomme keinen Fehler, aber sie wird einfach nicht abgelegt.
Wenn ich mir mit dem DBVisualizer die Eigenschaften der Spalten meiner Tabelle anschaue, dann haben die BLOBS eine DATA_LENGTH von 4000 Bytes. Wie kommt das? Ist das mein Problem? Ich dachte BLOBs seien flexibel bis 4 GB, wovon ich noch ein wenig entfernt bin?
Habe die Tabelle einfach in SQLPlus mit CREATE TABLE … (Spaltenname BLOB, …) erzeugt. Muss ich da noch eine Größe mitgeben?
Muss ich verzweifeln, oder kann mir jemand helfen?