JDBC处理大字段

         数据迁移中大字段一直是个比较头疼的问题,一旦大字段中值大于32K的话就无法用sql语句来实现插入和更新。通用的解决办法一般有两种:存储过程和JDBC。 存储过程相对比较呆板,这里就不做说明,下面主要总结下自己用程序实现的大字段更新和插入。

        关键示例代码:

 

写道
//其中ART字段为CLOB/BLOB
PreparedStatement prsm=conn.prepareStatement("INSERT INTO A(ID,NAME,CODE,ART) VALUES(?,?,?,?,)");

//根据字段类型选择相应的set方法
prsm.setXXX(1,value);prsm.setXXX(2,value1);prsm.setXXX(3,value1);
//下面是关键对大字段处理 ART是CLOB
InputStream in=new ByteArrayInputStream(value.getBytes());
InputStreamReader streamReader=new InputStreamReader(in);
prsm.setCharacterStream(i+1, streamReader, value.getBytes().length);
/*如果ART是BLOB
* InputStream in=new ByteArrayInputStream(value.getBytes());
* prsm.setBinaryStream(i+1, in, value.length());
*/

 上面是插入的一段示例,更新道理一样。看到网上有些童鞋一直认为对于大字段应该先插入一个空的然后锁定后在更新,个人认为完全没有必要,利用上面的代码在Oracle和DB2上圆满解决问题。

      

     PS:上面的代码扩充点配置文件,通过配置文件可以灵活达到不同数据库大字段的转移。

 

你可能感兴趣的:(oracle,sql,jdbc,db2)