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:上面的代码扩充点配置文件,通过配置文件可以灵活达到不同数据库大字段的转移。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值