有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PreparedStatement没有为参数1指定值

有问题的是,需要设置的是一个自动递增的整数,那么我该如何指定呢

PreparedStatement stmt = conn.prepareStatement("INSERT INTO `"+OnlineUsers.table2+"` VALUES (?,?,?)");

//What I do here
stmt.setInt(2, currentonline);
stmt.setDate(3, new java.sql.Date(b.getTime()));
stmt.execute();

共 (1) 个答案

  1. # 1 楼答案

    最好明确指定列名:

    "INSERT INTO `" + OnlineUsers.table2 + "` (col2, col3) VALUES (?,?)"
    

    然后:

    stmt.setInt(1, currentonline);
    stmt.setDate(2, new java.sql.Date(b.getTime()));
    

    这将使您的代码对数据库中更改的列顺序具有健壮性

    注意:如果OnlineUsers.table2来自不受信任的来源,则应验证此字符串,否则可能会受到SQL注入攻击