Insert into db:
int primaryKeyId = getNextPrimaryKeyId();
PreparedStatement stmt1 = conn.prepareStatement(" insert into docTable values (?, ?, empty_blob()) ");
stmt1.setInt(1, primaryKeyId );
stmt1.setString(2, getDocumentTitle());
stmt1.executeUpdate();
PreparedStatement stmt2 = conn.prepareStatement(" select doc from docTable where id = ? for update ");
stmt2.setInt(1, primaryKeyId);
stmt2.execute();
OracleResultSet rset = (OracleResultSet)stmt2.getResultSet();
if (rset.next()) {
BLOB document = rset.getBLOB("doc");
document.trim(0);
OutputStream os = document.getBinaryOutputStream();
os.write(getDocumentToBeWrittenToDb());
os.flush;
os.close;
}
Read from db:
PreparedStatement stmt = conn.prepareStatement(" select title, doc from docTable where id = ?");
stmt.setInt(1, primaryKeyId);
stmt.execute();
BLOB document;
OracleResultSet rset = (OracleResultSet)stmt.getResultSet();
if (rset.next())
{
ByteArrayOutputStream baos = null;
InputStream is = null;
try
{
BLOB document = rset.getBLOB("document");
String title = rset.getString("title");
is = document.getBinaryStream();
baos = new ByteArrayOutputStream();
byte[] data = new byte[2048];
int len;
while ((len = is.read(data)) != -1)
{
baos.write(data, 0, len);
}
} finally
{
if (null != baos) baos.close();
if (null != is) is.close();
}
return baos.toByteArray();
}