java使用jsp在oracle表中插入值
我使用以下代码将值插入到表中
String sql = "INSERT INTO APPLICATION VALUES (?,?,?,?,?,?,TO_DATE(?,'DD/MMYYYY'),?,TO_DATE(?,'DD/MM/YYYY'),?,?,?,?,?,SYSDATE,'X',?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,Integer.parseInt(sr));
pstmt.setString(2,nm);
pstmt.setString(3,(String)session.getValue("ITSGTYP"));
pstmt.setString(4,pst);
pstmt.setString(5,dox);
pstmt.setString(6,zo);
pstmt.setString(7,dob);
pstmt.setString(8,cdr);
pstmt.setString(9,cdrdt);
pstmt.setString(10,qual);
pstmt.setString(11,mail);
pstmt.setString(12,bond);
pstmt.setInt(13,Integer.parseInt((String)session.getValue("USER")));
pstmt.setString(14,request.getRemoteAddr());
pstmt.setString(17,place);
插入值的表格说明如下所示
EMP_ID NOT NULL NUMBER(6)
NAME VARCHAR2(25)
APPLN_TYP VARCHAR2(10)
POST VARCHAR2(100)
DIV VARCHAR2(25)
ZONE VARCHAR2(5)
DOB DATE
CADRE VARCHAR2(5)
CADRE_DATE DATE
QUALIFICATION VARCHAR2(100)
EMAIL_ID VARCHAR2(70)
BOND VARCHAR2(3)
SUBMITTED_BY NUMBER(6)
SUBMIT_IP VARCHAR2(30)
SUBMIT_DATE DATE
FLAG VARCHAR2(1)
PLACE VARCHAR2(20)
在执行上述代码时,我得到以下错误
Error: java.sql.SQLException: Invalid column index
这个查询以前运行得很好
我以前的表没有PLACE
列。我不得不在以后插入它
# 1 楼答案
更安全的做法是在SQL语句中包含要插入的列名,如:
这样,您就可以更好地控制语句中使用的索引和列
# 2 楼答案
替换
pstmt.setString(17,place);
与
pstmt.setString(15,place);
出现错误的原因是:
在预处理语句的查询中没有17个
?
符号,只有15个?
符号,这意味着只能为该预处理语句设置15个值(15列)现在你要做的是在第17个索引处设置一个参数,在你的查询中没有在索引17处指定任何列,你只有15列和15个
?
符号,用于在相应的15列处插入值所以用我上面提到的替换它,它就会起作用