ADO操作Oracle\DB2\MySQL数据库CLOB\LONGTEXT备忘

  因于工作需要,需要读取、写入Oracle和DB2数据库的CLOB字段,以及MySQL数据库的LONGTEXT字段。在JAVA中,使用hibernate操作CLOB或LONGTEXT时,只需将相应字段映射为text,就可以像普通字符串一样进行读取和写入,只是要注意的是,可能需要将相应的jdbc驱动升级到相应版本。

  但是在ADO中,经过测试,读取CLOB和LONGTEXT字段可以像普通字符串一样读取(至少我测试没有遇到问题,但不保证在CLOB或LONGTEXT字段特别大时会出问题)。既是说直接用select语句查询出来,再取相应字段值即可。但是写入时,MySQL可以直接像字符串类型一样写入,既是说直接将LONGTEXT字段的值直接写到insert语句里再执行即可。对于Oracle和DB2数据库,如果CLOB值不是很长,也可以直接写到insert语句中,但是一但CLOB的值超长,就会报错。

  Oracle:ORA-01704: 字符串文字太长

  DB2:[DB2/NT] SQL0102N  以 "xxxxxxxxxxx" 开始的字符串常量太长。  SQLSTATE=54002

  通过查询,CLOB字段的长度在4000以下时,Oracle不会报错,而DB2支持的最大长度是32672(SQL0102N)。

  可以使用BLOB的方式写入CLOB,经过测试,这三种数据库都没有问题,可以正常写入。

  楼主测试时,字符串的长度在1M左右,因为需要存储的是一个XML,1M的XML已经不小了,所以没有继续测试更长的CLOB。因此不保证,CLOB的值更大时,直接使用select和insert直接读取和写入没有问题。

  楼主最终的做法是,读取直接用select方式,写入用插入BLOB的方式。测试在1M左右这三种数据库没有问题。但是要注意,程序与数据库的字符集、编码方式要一致,否则读取与写入方式不一致,可能导致数据不一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值