Java Jdbc SQL异常(语法错误)

Java Jdbc SQL异常(语法错误),java,jdbc,Java,Jdbc,我正在为我的注册系统制作一个登录示例。在做一些研究时,抓取一些我在互联网上看到的代码。我将在用户名和密码字段中登录。在使用SQL时遇到错误。任何帮助、提示都将不胜感激 错误 Error message: Syntax error: Encountered "," at line 1, column 42. Error code: -1 SQL State: 42X01 这是编译器将错误指向第1行第42列的地方。我使用了Windows侦听器,可用于关闭系统 窗口侦听器代码 //Window Li

我正在为我的注册系统制作一个登录示例。在做一些研究时,抓取一些我在互联网上看到的代码。我将在用户名和密码字段中登录。在使用SQL时遇到错误。任何帮助、提示都将不胜感激

错误

Error message: Syntax error: Encountered "," at line 1, column 42.
Error code: -1
SQL State: 42X01
这是编译器将错误指向第1行第42列的地方。我使用了Windows侦听器,可用于关闭系统

窗口侦听器代码

//Window Listener
    addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e){
           System.exit(0);
       }//window Closing
       });
代码这是我登录的地方。当我填写完用户名和密码文本字段并点击登录按钮时,我遇到了错误

loginButton.addActionListener(new ActionListener (){
     public void actionPerformed(ActionEvent e){

         String inputUsername = usernameTextField.getText().trim();
         String inputPassword = String.valueOf(passwordPasswordField.getText());
         String inputUserType = listUser.getSelectedItem().toString();

          if(inputUsername.isEmpty() && inputPassword.isEmpty()){
                  JOptionPane.showMessageDialog(null, "Please fill up!");
          }
          else if(inputUsername.isEmpty()){
                 JOptionPane.showMessageDialog(null, "Please enter your username");
          }
          else if(inputPassword.isEmpty()){
                 JOptionPane.showMessageDialog(null, "Please enter your password");
          }
          else{
                String myQuery = "SELECT * FROM USERTYPE WHERE USERNAME = ?, PASSWORD = ?";

          try(Connection myConnection = DBUtil.getConnection(DBType.JDBC);
                       PreparedStatement myPs = myConnection.prepareStatement(myQuery);
                       ResultSet myResultSet = myPs.executeQuery()){ 

                        while(myResultSet.next())

                            myPs.setString(1, inputUsername);
                            myPs.setString(2, inputPassword);

                            myPs.executeUpdate();
                            JOptionPane.showMessageDialog(null, "Succesfuly Inserted!");
                        //end of else
                    }//end of try   

                   catch(SQLException ex) {
                        DBUtil.processException(ex);
                    }//end of catch
                    }//end of else
        }//end of action performed
            });//end of action listener`
DBUtil作为我的连接和异常这是我将连接和异常放在一边的地方,在那里抛出错误

private static final String dbUrl = "jdbc:derby://localhost:1527/Info";
private static final String username = "john";
private static final String pass = "john";
                                       //Argument for DBType
public static Connection getConnection(DBType dbType) throws SQLException{
    return DriverManager.getConnection(dbUrl,username,pass);
}

public static void processException(SQLException e){
    System.err.println("Error message: "+e.getMessage());
    System.err.println("Error code: "+e.getErrorCode());
    System.err.println("SQL State: "+e.getSQLState());
}

您需要在查询中使用
而不是逗号
,如下所示:

   String myQuery = "SELECT * FROM USERTYPE WHERE USERNAME = ? and PASSWORD = ?"
  PreparedStatement myPs = myConnection.prepareStatement(myQuery);
  myPs.setString(1, some_userName);
  myPs.setString(2, some_password);
您需要在
myPs.executeQuery()
之前设置
2
参数,如下所示:

   String myQuery = "SELECT * FROM USERTYPE WHERE USERNAME = ? and PASSWORD = ?"
  PreparedStatement myPs = myConnection.prepareStatement(myQuery);
  myPs.setString(1, some_userName);
  myPs.setString(2, some_password);

您需要在查询中使用
而不是逗号
,如下所示:

   String myQuery = "SELECT * FROM USERTYPE WHERE USERNAME = ? and PASSWORD = ?"
  PreparedStatement myPs = myConnection.prepareStatement(myQuery);
  myPs.setString(1, some_userName);
  myPs.setString(2, some_password);
您需要在
myPs.executeQuery()
之前设置
2
参数,如下所示:

   String myQuery = "SELECT * FROM USERTYPE WHERE USERNAME = ? and PASSWORD = ?"
  PreparedStatement myPs = myConnection.prepareStatement(myQuery);
  myPs.setString(1, some_userName);
  myPs.setString(2, some_password);

首先,你的代码中有太多语法错误,要么你只是从某处复制粘贴了它,要么你粗心地把你的问题加上错误,希望找到正确的答案

第二件事

对于您正在尝试的查询,调用executeUpdate不正确。这是一个Select查询,在调用executeQuery之前必须先设置参数

String myQuery = "SELECT * FROM USERTYPE WHERE `USERNAME` = ? AND `PASSWORD` = ?";

          try(Connection myConnection = DBUtil.getConnection(DBType.JDBC);
                       PreparedStatement myPs = myConnection.prepareStatement(myQuery){


                            myPs.setString(1, inputUsername);
                            myPs.setString(2, inputPassword);
                       ResultSet myResultSet = myPs.executeQuery();


                        //end of else
                    }//end of try   

                   catch(SQLException ex) {
                        DBUtil.processException(ex);
                    }//end of catch
                    }//end of else
        }//end of action performed
            });//end of action listener`

首先,你的代码中有太多语法错误,要么你只是从某处复制粘贴了它,要么你粗心地把你的问题加上错误,希望找到正确的答案

第二件事

对于您正在尝试的查询,调用executeUpdate不正确。这是一个Select查询,在调用executeQuery之前必须先设置参数

String myQuery = "SELECT * FROM USERTYPE WHERE `USERNAME` = ? AND `PASSWORD` = ?";

          try(Connection myConnection = DBUtil.getConnection(DBType.JDBC);
                       PreparedStatement myPs = myConnection.prepareStatement(myQuery){


                            myPs.setString(1, inputUsername);
                            myPs.setString(2, inputPassword);
                       ResultSet myResultSet = myPs.executeQuery();


                        //end of else
                    }//end of try   

                   catch(SQLException ex) {
                        DBUtil.processException(ex);
                    }//end of catch
                    }//end of else
        }//end of action performed
            });//end of action listener`

其中USERNAME=?,PASSWORD=?
-您在哪本手册中找到该语法?它应该是
其中USERNAME=?密码=?
。同样感谢您的回答。你是上帝!:)
其中USERNAME=?,PASSWORD=?
-您在哪本手册中找到该语法?它应该是
其中USERNAME=?密码=?
。同样感谢您的回答。你是上帝!:)它已经消除了错误。现在出现错误“当前语句中至少有一个参数未初始化”。我已经调用了setString 1和setString 2。第一个索引是用户名,第二个索引是密码?谢谢你的救命恩人。谢谢你。我刚刚开始学习jdbc谢谢你的帮助。它已经消除了错误。现在出现错误“当前语句中至少有一个参数未初始化”。我已经调用了setString 1和setString 2。第一个索引是用户名,第二个索引是密码?谢谢你的救命恩人。谢谢你。我刚刚开始学习jdbc谢谢你的帮助,谢谢你,它已经开始工作了。也许我只是对语法有点混淆。顺便说一句,这帮了大忙!:)谢谢你,它已经开始工作了。也许我只是对语法有点混淆。顺便说一句,这帮了大忙!:)