ORA-12899 JDBC插入ORA字段超长

it2025-02-12  9

往ORA插入中文的时候报了这个错,ORA-12889:value to large for column (actual:54,maximum:40)

有2个原因造成的,

第一个是读取file的时候文字没有设置编码集,导致乱码,不乱码还是会出现这个错误。

第二个是OracleJDBC问题。一般直接用ps.setString()设置字符串数据时,Oracle的JDBC驱动会将中文转换为2字节或3字节,不固定的,因此经常会越界。如果改为ps.setCharacterStream()就是固定的每个中文两个字节。

//ps.setString(i, value); ps.setCharacterStream(index, new StringReader(value), value.length()); 

 

最新回复(0)