java.sql.SQLException: 无效的列索引

String sql2="insert into caselocus(id,pmid,caseno,flowtache,status,begindate,enddate) values(?,?,?,?,?,?,?)";
pstmt.setInt(1, i);
pstmt.setLong(2, pmid);
pstmt.setString(3, caseno);
pstmt.setInt(4, huanjie);
pstmt.setInt(5, 1);
pstmt.setDate(6,(java.sql.Date) date1);
pstmt.setDate(7,(java.sql.Date) date1);
是报的错!请大侠看看!
java.sql.SQLException: 无效的列索引
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.OraclePreparedStatement.setIntInternal(OraclePreparedStatement.java:3970)
at oracle.jdbc.driver.OraclePreparedStatement.setInt(OraclePreparedStatement.java:3961)
at MadeToCaseLocus.main(MadeToCaseLocus.java:58)

String sql2="insert into caselocus(id,pmid,caseno,flowtache,status,begindate,enddate) values(?,?,?,?,?,?,?)";
改成
String sql2="insert into caselocus(pmid,caseno,flowtache,status,begindate,enddate) values(?,?,?,?,?,?)";
//pstmt.setInt(1, i); 这句去掉

这里id如果是自动增长的标识字段,那它是不能insert赋值的!追问

为什么id自增长就不能insert赋值?
其实这个问题是少了这个语句
pstmt = conn.prepareStatement(sql2);
没有申明!

追答

你的意思是标识字段(自动增长字段)你也能插入值进去?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-09
应该是String sql2="insert into caselocus(id,pmid,caseno,flowtache,status,begindate,enddate) values(?,?,?,?,?,?,?)";
声明sql2时候表中列明写错了,看看是不是少写了,或者写错了,大小写什么的
第2个回答  2012-01-09
那就是数据库中没有你这个列呗, 自己看看数据库和你的SQL语句 要不下面加一个SYSTEM.OUT.PRINTLN(SQL); 然后将打印的SQL语句去pl/sql里面执行下
第3个回答  2012-01-08
去掉id!去一个占位符!
相似回答