代码抛出SEVERE:没有为参数1异常指定值

时间:2013-05-21 03:47:01

标签: java mysql jdbc

我正在尝试从我的数据库中查找项目列表,但它会引发异常。我的代码和错误如下,所有字段类型都是正确的。

代码

     System.out.println("2");
      try {
           ps = con.prepareStatement("SELECT * from Users Where name = ?);"

        ResultSet r = ps.executeQuery();
        ps.setString(1, "jack");
        ResultSet result = ps.executeQuery();
        ....
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            System.out.println(e.getStackTrace());
        }

输出

INFO: 2
SEVERE: No value specified for parameter 1
INFO: [Ljava.lang.StackTraceElement;@6520c5b

1 个答案:

答案 0 :(得分:2)

ResultSet r = ps.executeQuery();上设置参数之前,您正在呼叫PreparedStatement。在对此方法进行编码时可能会出现拼写错误,因为您在PreparedStatement上设置参数时会有类似的行。

ps = con.prepareStatement(...);
//comment this line
// ResultSet r = ps.executeQuery();
ps.setString(1, "1");
//...
ResultSet result = ps.executeQuery();

与您的问题没有直接关系,如果您在代码中使用记录器而不是普通的System.out.println调用会更好。它可以通过向日志提供更好的消息来帮助您维护代码。