Since the image is coming in as a byte array, the "insert" statement wouldn't make sense since I am building the SQL
String in
Java and would make a messy conversion and storing the "image" as blob in the Oracle database.
I am inserting an image in a round-about way.
Here is the code:
//Pass the ResultSet(rs) to this method.
//The sql is "select image from image_table where chgbk_id=12345
try{
BLOB blob = ((OracleResultSet)rs).getBLOB(1);
String imageData = getTransactionData(transIndex).getString(IChgbkModel.IMAGE);
if(imageData==null){
throw new Exception("Image data is null.");
}
ImageModel image = new ImageModel(imageData);
InputStream instream = new ByteArrayInputStream(image.getImageData());
OutputStream outstream = blob.getBinaryOutputStream();
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = -1;
/**
* Use the read() method to read the GIF file to the byte array buffer,
* then use the write() method to write it to the BLOB. When you finish,
* close the input and output streams.
*/
while ((length = instream.read(buffer)) != -1){
outstream.write(buffer, 0, length);
}
instream.close();
outstream.close();
}
catch(Exception exc){
throw new DatasourceException("Error when trying to update Image BLOB data.", exc);
}
When this code is applied to Connection Pooling in WebSphere 4.0.3 server it doesn't like the "OracleResultSet" object I am using. I get this error:
java.lang.ClassCastException: com.ibm.ejs.cm.proxy.ResultSetProxy
Any help would be appreciated.