一般情况下用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();
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐