【问题标题】:Getting "java.sql.SQLException: Values not bound to statement" exception获取“java.sql.SQLException:值未绑定到语句”异常
【发布时间】:2016-05-05 18:43:52
【问题描述】:

我正在尝试制作一个程序,该程序包括通过登录系统使用 SQL 连接用户,然后如果凭据良好,用户将被重定向到另一个框架。

但是我遇到了一个问题,我想在 SQL 库中有一些信息,所以我尝试使用 while 循环并且它正在工作,但是遇到错误之后:

java.sql.SQLException:值未绑定到语句

见以下代码:

    String pseudo2 = null;
    String rank2 = null;

    try {

        String searchname2 = "select * from AdminsInfos where pseudo=?";
        PreparedStatement name2 = connection.prepareStatement(searchname2);



        ResultSet rspseudo2 = name2.executeQuery();;

        while (rspseudo2.next())
        {

            pseudo2 = rspseudo2.getString("Pseudo");
            rank2 = rspseudo2.getString("Rank");

        }

    } catch (Exception e2) {

        e2.printStackTrace();

    }

    JOptionPane.showMessageDialog(null, "Username and password are correct, connection Admin !");

    frame.setVisible(false);
    new LoginMain().setVisible(true);

    LoginMain.usernameField.setText(pseudo2);
    LoginMain.ranklabel.setText("Rank : " + rank2);

你也可以通过下图查看 SQL 库:

sql base

有人可以帮我吗?

【问题讨论】:

  • 您的 SQL 语句中有一个 ? 占位符。它必须在executeQuery 之前使用PreparedStatement 方法设置,例如setStringsetInt,或根据数据类型以类似方式设置。

标签: java sql sql-server eclipse


【解决方案1】:

由于你有一个绑定变量,你需要在执行语句之前设置值。

例如,如果psuedoString 类型,那么您将执行以下操作。

    String searchname2 = "select * from AdminsInfos where pseudo=?";
    PreparedStatement name2 = connection.prepareStatement(searchname2);
    name2.setString(1,"value");

    ResultSet rspseudo2 = name2.executeQuery();

其中setString中的第一个参数表示要为绑定变量设置第一个值。

【讨论】:

  • 好吧,pseudo 一开始就完全是 null,在我的 SQL 设置之后
  • 哦,我明白了!该值可以为 null 并且在它被 SQL 使用 set 或类似的纠正之后?
  • 不,不会。如果值为 null,那么您的查询将查找 psuedo 列的值为“null”字符串的行。为了避免这个问题,你必须做这样的事情。 stackoverflow.com/questions/4215135/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多