oracle的varchar2(4000)可以存储2000个汉字或者4000个英文字符? .

来源:互联网 发布:淘宝买到假货怎么举证 编辑:程序博客网 时间:2024/05/16 01:49
 
一般情况下用ps.setString()的办法是不行的,
因为oracle的驱动会把一个中文字用三个字节表示,加上jdbc本身对字符的的限制为2000,
也就是600多字,如果是英文字符也只能到2000,英文用2个字节表示,
但是oci驱动没有这个限制,如何能通过jdbc把2000个汉字插进去呢?
利用PreparedStatement的setCharacterStream方法就可以了,
Reader  reader = new StringReader(你需要插入的长字符);
ps.setCharacterStream(1,reader,字符长度);
这个就可以把2000个中文字符插入到表中
如果在hibernate中怎么办呢?暂时没有想到!换成clob类型吗?好像问题还不少!
  
 Reader  reader = new StringReader(new String(chars));
  PreparedStatement ps = conn.prepareStatement("insert into tvar (value) values (?)");
  ps.setCharacterStream(1,reader,chars.length);
 ps.executeUpdate();