【问题标题】:Questions about JSP & SQL. Java web application关于 JSP 和 SQL 的问题。 Java 网络应用程序
【发布时间】:2020-09-11 22:10:20
【问题描述】:

我最近正在制作一个 Java Web 应用程序,它必须专注于 CRUD(你知道)。但我坚持阅读、更新和删除操作(三个操作)。只有创建操作才能正常工作。详细地说,我正在开发的 Java Web 应用程序到目前为止还没有完成。在我的代码中,名为“findUsers”的函数用于实现读取操作。顺便说一句,我已经检查了很长时间的代码。我猜问题可能出在 findUsers 函数中(不确定,只是一个假设)。每次,我尝试键入 R 来调用该函数,Netbeans 返回“用户不存在”。我不知道为什么。而且,数据库连接成功。 enter image description here这张照片是我的数据库结构。

DBManager.java

//read operation
   public User findUsers(String email, String password) throws SQLException {
    String sqll = "SELECT * FROM XWB.USERS WHERE EMAIL = ' " + email + " ' AND PASSWORD = ' " + password + " ' ";
    // " SELECT * FROM XWB.USERS WHERE EMAIL = ' " + email + " ' AND PASSWORD = ' " + password + " ' "; 
    //select * from XWB.Users where EMAIL = 'TargetEmail' and PASSWORD = 'TargetPassword';
    ResultSet rs = st.executeQuery(sqll);

    while (rs.next()) {
        String UserEmail = rs.getString("EMAIL");
        String UserPassword = rs.getString("PASSWORD");
        if (UserEmail.equals(email) && UserPassword.equals(password)) {
            String UserName = rs.getString("NAME"); 
            String UserGender = rs.getString("GENDER");
            String UserColor = rs.getString("FAVOURITECOLOR");
            return new User(UserEmail, UserName, UserPassword, UserGender, UserColor);
        }
    }
    return null;
}

TestDB.java(我用这个类来测试DBManager)

 // findUsers()
    private void testRead() throws SQLException {
        System.out.print("User email: ");
        String email = in.nextLine();
        System.out.print("User password: ");
        String password = in.nextLine();
        User user = db.findUsers(email, password); // returns nothing
        //System.out.println(user);
        if( user != null) {
            System.out.println("User " + user.getName() + " exists in the database.");
        }else { //user == null
            System.out.println("User does not exit.");
        }
    }

这是我从 Netbeans 得到的结果。它总是告诉我“用户不存在。” enter image description here

【问题讨论】:

    标签: java sql jsp model-view-controller crud


    【解决方案1】:

    如果您的数据值与电子邮件和密码正确,我认为您应该删除 ['] 字符前后的空格。 你的代码:

     String sqll = "SELECT * FROM XWB.USERS WHERE EMAIL = ' " + email + " ' AND PASSWORD = ' " + password + " ' ";
    

    替换:

     String sqll = "SELECT * FROM XWB.USERS WHERE EMAIL = '" + email + "' AND PASSWORD = '" + password + "' ";
    

    【讨论】:

      【解决方案2】:

      在您的代码中,您有return null,因此当您的调用类if( user != null) 进行检查时将返回false,并且您的if-statementelse 部分将被执行。所以要克服以下更改:

      您的方法如下所示:

      User user; //create class object
      String sqll = "SELECT * FROM XWB.USERS WHERE EMAIL = ? AND PASSWORD = ? ";
      PreparedStatement ps = con.prepareStatement(
       sqll);
      //setting value for "?" 
      ps.setString(1, email);
      ps.setString(2, password);
      //execute query
      ResultSet rs = ps.executeQuery();
      //if found
      if (rs.next()) {
       //fetch
       String UserEmail = rs.getString("EMAIL");
       String UserPassword = rs.getString("PASSWORD");
       String UserName = rs.getString("NAME");
       String UserGender = rs.getString("GENDER");
       String UserColor = rs.getString("FAVOURITECOLOR");
       //pass in constructor
       user = new User(UserEmail, UserName, UserPassword, UserGender, UserColor);
      } else {
       //set the object to null (no match)
       user = null;
      }
      //send object back
      return user;
      

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 1970-01-01
        • 2011-05-11
        • 2015-12-24
        • 2013-05-25
        • 1970-01-01
        • 2011-02-01
        • 2020-01-08
        • 1970-01-01
        相关资源
        最近更新 更多