日期:2014-05-20  浏览次数:20836 次

PreparedStatement插入数据时异常: 插入的值对于列过大
代码如下:

                                String[] strArray = str.split("\\|");
pstmt.setString(1,strArray[0]);
pstmt.setDouble(2,Double.parseDouble(strArray[1]));
pstmt.setDouble(3,Double.parseDouble(strArray[2]));
pstmt.setString(4,strArray[3]);
pstmt.setString(5,strArray[4]);
pstmt.setString(6,strArray[5]);
pstmt.setString(7,strArray[6]);
pstmt.setInt(8,Integer.parseInt(strArray[7]));
pstmt.setInt(9,Integer.parseInt(strArray[8]));
pstmt.setString(10,strArray[9]);
pstmt.setInt(11,Integer.parseInt(strArray[10]));
pstmt.setString(12,strArray[11]);
pstmt.executeUpdate();


分割之后的字符串没有问题,我打印了strArray[i]也都能打出来,但实际set到pstmt里的只有string类型,其他的都没有set进去,报的异常是  java.sql.SQLDataException: ORA-01401: 插入的值对于列过大

我插入的时候number(10,0) 对应double
                        integer                   对应int

请各位帮忙看看。。。


------解决方案--------------------
number(10,0) 表示double不合适吧
------解决方案--------------------
strArray[1] 这个值是多少啊,看看number(10,0)能放下吗?int 应该不会有问题的
------解决方案--------------------
数据类型不匹配啊。
------解决方案--------------------
number是有精度的,number(10,0),改成number(10,2)试试,还要确认其他插入的String类型的数据长度小于数据库的varchar类型的长度。