java如何存储blob
现在遇到一个难题,请dx们赐教:
我现在需要将一个很大的二进制数组存储到oracle数据库中,对应的数据库字段类型是blob,是一个insert操作。
代码片度如下:
String sql = "insert into FCDB_BACKUP VALUES(?,?,?,TO_DATE('" +
generateBackupTime() + "','YYYY-MM-DD HH24:MI:SS'))";
psBackup = conn.prepareStatement(sql);
for (int i = 0; i < list.getListSize(); i++)
{
byte[] b1 = list.getKeyAt(i);
byte[] b2 = list.getValueAt(i);
String key = null;
try
{
key = new String(b1, "UTF-8");
}
catch (Exception ex2)
{
ex2.printStackTrace();
}
BLOB blob = BLOB.empty_lob();
OutputStream os = blob.getBinaryOutputStream();
os.write(b2);
psBackup.setInt(1, tid);
psBackup.setString(2, key);
psBackup.setBlob(3, blob);
psBackup.addBatch();
}
psBackup.executeBatch();
conn.commit();
执行之后会出现“java.sql.SQLException: 空二进制大对象操作无效”的异常,如果注释掉
OutputStream os = blob.getBinaryOutputStream();
os.write(b2);
部分,则没有错误。
请问dx们,有没有比较方便的方式能够一次性将blob数据写入数据库,因为这是一个内存数据库到关系数据库的备份操作,数据量也比较大。