猿问

使用 Servlet 和准备好的语句未找到 UPDATE 类异常

因此,多亏了下面的建议,我将使用语句的第一种方法更改为使用 Prepared Statements ,我还将 verifyUser 方法与 ConnectDB 分开,将其放入一个新的用户类(在我的作业中要求)。


现在我不再使用任何 NPE,而是另一个 NPE,它是 MySQL JDBC 驱动程序的 Class Not Found Exception。


用户类的代码如下:


public class Users {


private String login;

private String password;



public Users(String login, String password) {

    this.login = login;

    this.password = password;

}


public String getUsername() {

    return login;

}


public String getPassword() {

    return password;

}


public void setPassword(String password) {

    this.password = password;

}


public void setUsername(String login) {

    this.login = login;

}


public boolean verifyUser(String login, String password) throws SQLException {


    ConnectDB cdb = new ConnectDB();


    Connection cn = DriverManager.getConnection(cdb.url, cdb.login, cdb.password);


    PreparedStatement ps = cn.prepareStatement("SELECT password FROM users WHERE login LIKE ? ");


ps.setString(1,username);


    ResultSet rs=ps.executeQuery();


    rs.next();


    if (rs.getString(2).equals(password)) {

        System.out.println("TEST");

        return true;

    }


    else

        return false;

}

}

这是我的 ConnectDB 类:


public class ConnectDB {


String url = "jdbc:mysql://localhost:3306/entreprise";

String login = "root";

String password = "kamoulox369";

Connection connection = null;

Statement st = null;

ResultSet rs = null;

PreparedStatement ps = null;


public  void getConnection() {

    try {

        Class.forName("com.example.mysql.jdbc.Driver");

        connection = DriverManager.getConnection(url, login, password);

    } catch (ClassNotFoundException | SQLException e) {

        e.printStackTrace();

    }

}


}


一只名叫tom的猫
浏览 117回答 1
1回答

慕的地6264312

servlet 或 jdbc 并不简单。它们都容易出错。你有一个并发问题,资源问题,你没有关闭任何东西(包括搁浅的连接),还有一个 sql 注入漏洞。在这里使用静态成员是灾难性的。每个请求都在不同的线程上执行,它们都将覆盖其他线程正在使用的对象。每个请求都应该使用局部变量来处理。数据库连接永远不会关闭,您的数据库将耗尽连接并在某些时候停止工作。完成后关闭所有 jdbc 对象。将用户输入的输入连接到您运行的 sql 中,允许用户在没有有效密码的情况下进入或运行任意 sql。使用 PreparedStatement。
随时随地看视频慕课网APP

相关分类

Java
我要回答