出错源代码如下:
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1,beans.getProperty())//这条语句报错
报错信息如下:
java.sql.SQLException: 数据大小超出此类型的最大值: 6918
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:147)
        at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.jav
a:2461)
        at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStat
ement.java:1155)
        at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedSt
atement.java:1572)
对以上错误自己的一点分析:
这个错误和pstmt.setString(1,beans.getProperty()) 中pstmt接收的字符串大小有关,当字符串长度超过一定限制(还没有具体测试这个上限是多少)后就会报这个错误,查找了jdk文档中关于PreparedStatement的描述:
void setString(int parameterIndex,
               String x)
               throws SQLException
Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database. 
由以上描述判断应该和驱动程序有关,网上也有说通过更换驱动解决问题的案例,但是我更换了好几个版本的驱动也不行。
我的数据库使用的是utf-8字符集,查询了相关资料,utf8中一个中文字符占用3个bytes,不知道和这个有没有关系。