为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2021-06-08 09:23:20
因此,多亏了下面的建议,我将使用语句的第一种方法更改为使用 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();    }}}
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

servlet 或 jdbc 并不简单。它们都容易出错。

你有一个并发问题,资源问题,你没有关闭任何东西(包括搁浅的连接),还有一个 sql 注入漏洞。

在这里使用静态成员是灾难性的。每个请求都在不同的线程上执行,它们都将覆盖其他线程正在使用的对象。每个请求都应该使用局部变量来处理。

数据库连接永远不会关闭,您的数据库将耗尽连接并在某些时候停止工作。完成后关闭所有 jdbc 对象。

将用户输入的输入连接到您运行的 sql 中,允许用户在没有有效密码的情况下进入或运行任意 sql。使用 PreparedStatement。


查看完整回答
反对 回复 2021-06-10
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信