在前文数据转移的过程中,笔者将附件实际上存储到了本地磁盘上。并没有将附件存储到Oracle数据库的BLOB字段中。在实际的软件项目中,一般也是将附件存储在服务器磁盘上使用。但不是说,所有的项目都这么做。是否使用Oracle的BLOB字段也是根据情况来定。笔者为了将软件功能完善,特意开发了将Domino中的附件转移至BLOB字段中的功能。本文中的BLOB字段,是指Oracle数据库的BLOB字段。因为笔者没有安装mysql数据库,因此没有实测mysql数据库的BLOB字段运行情况。
配置中增加了以下两个参数:
BLOB字段存储:是否启用BLOB字段存储。
附件表名:此处BLOB存储在单独的附件表中,与业务数据分开。
笔者为了开发对BLOB字段的数据支持,从网上找了些资料来参考。网上大多数的介绍都是使用
oracle.sql.BLOB.getBinaryOutputStream(),这个方法,但实际上在JDBC驱动程序中,此方法已经被标记为:
Deprecated. This method is deprecated -- use setBinaryStream
出于好奇心,笔者决定继续研究一下。终于发现,存储BLOB字段可以使用更简洁的方法:
PreparedStatement ps = con.prepareStatement(
"INSERT INTO TB_FILE(ID, Subject, Body) VALUES (3,"filename",?)"); PrepareStatement.setBinaryStream(3, FileInputStream, fileIn.length());
对比用输入输出流存储BLOB字段应该是简洁多了。不过此方法的缺陷,笔者没有研究。
添加新评论1 条评论
2015-12-02 15:33