亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Servlet 和準備好的語句未找到 UPDATE 類異常

使用 Servlet 和準備好的語句未找到 UPDATE 類異常

一只名叫tom的貓 2021-06-08 09:23:20
因此,多虧了下面的建議,我將使用語句的第一種方法更改為使用 Prepared Statements ,我還將 verifyUser 方法與 ConnectDB 分開,將其放入一個新的用戶類(在我的作業中要求)?,F在我不再使用任何 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 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號