解决数据过长不能插入数据库的问题的方法
这种数据过长的问题也需要分类型对待,不同数据库,不同字段类型的操作都是不一样的
我们以Oracle数据库为例,
假定存储字段的名称为 field1 , 类型为 varchar2(4000),
这时候,理论的情况可以最大插入4000个字符或2000个中文,但实际进行数据库插入时,
实际的字符取决于我们数据库的平台,版本,SGA中PGA的大小,
以爱普生二期的公司数据库开发环境:PIII900,RAM256, Oracle8.17, SGA 300M为例,
当用Statement作为数据库操作容器时,直接的对field1插入会造成PGA的增大,有可能导致数据库CRASH
当用PrepareStatement作为数据库操作容器时,在field1为varchar2(4000)是,通常的操作是没有问题的。
当field1 的类型为long型,
这时候,理论的情况是可以最大插入2G的字符或1G的中文,但实际进行数据库插入时,
如用Statemetn作为数据库操作容器时,直接的插入同类型为varchar2(4000)的情况。
当用PrepareStatemtn作为数据库操作容器时,通常的操作只可以插入1567字符长度内的数据,这时,就需要
我们用流方式去解决问题(如所述)。
总结:
当我们将一个字段设置为long字段为其他大字段时,可使用流方式进行数据库操作,但此时,我们也失去了对
该字段使用条件查询,创建索引等功能。
此问题出现在多处,如后台/部门公告、行业新闻等。数据库中相应字段为varchar2(4000),但数据长度超过700就不能插入了。PreparedStatement pstmt;String content;问题原因:pstmt.setString(1,content);如果content过长,插入数据库不能成功。解决办法:pstmt.setCharacterStream(1,new java.io.StringReader(content),content.length());成功。
本文地址:http://www.45fan.com/dnjc/73408.html