java.sql.sqlexception无效的列索引

时间:2017-05-05 16:49:33

标签: java sql oracle servlets

大家好,有人可以告诉我这里有什么问题吗? 我有一个任务,我被问到,我是用Java servlet连接oracle数据库的新手。

这是我的代码:

try {
    out.print("first");
    Class.forName("oracle.jdbc.OracleDriver");
    out.print("aaa");
    Connection con
            = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:xe", "myusername", "mypassword");
    out.print("111");
    PreparedStatement ps = con
            .prepareStatement(
    "INSERT INTO signup 
         values(fn, ln, date, em, pa, crnum)
    ");
                    out.print("222");
    ps.setString(1, fn);
    ps.setString(2, ln);
    ps.setString(3, da);
    ps.setString(4, em);
    ps.setString(5, pa);
    ps.setString(6, cr);

    int i = ps.executeUpdate();
    if (i > 0) {
        out.print("You are successfully registered...");
    }

} catch (Exception e2) {
    out.println(e2);
}

out.close();
response.sendRedirect("address");
/* when press next bottom 
        it'll take me to add.html*/

在我运行整个代码后,我得到了这个:java.sql.sqlexception: invalid column index

2 个答案:

答案 0 :(得分:4)

在您的SQL语句中,您必须为绑定变量提供令牌或占位符,如下所示...

 PreparedStatement ps = con.prepareStatement("INSERT INTO signup values(?,?,?,?,?,?)");
 ps.setString(1,fn);
 ps.setString(2,ln);
 ps.setString(3,da);
 ps.setString(4,em);
 ps.setString(5,pa);
 ps.setString(6,cr);

答案 1 :(得分:0)

您需要使用占位符?

PreparedStatement ps = con.prepareStatement("INSERT INTO signup values (?,?,?,?,?,?)");