java.sql.SQLException:對空結(jié)果集的非法操作。驗證時
您應該使用以下結(jié)果rs.next():
if (rs.next()) {n=rs.getString('id');m=rs.getString('pass'); }
如果rs.next()返回false,則表示查詢未返回任何行。
解決方法我想做的是:
接受用戶名(uname)和密碼(passw)作為用戶輸入。
使用ResultSet,檢索唯一的元組,數(shù)據(jù)庫中的用戶名和用戶適合的用戶名均指向該元組。該元組將包含用戶名和密碼。
如果用戶提供的密碼也適合數(shù)據(jù)庫中的密碼,則顯示以下信息:兩種認證均正確,否則其中一種錯誤。
除一種情況外,一切正常。當用戶名本身錯誤時,mysql將根本找不到該屬性,并且會出現(xiàn)此錯誤:java.sql.SQLException: Illegaloperation on empty result set.
代碼是:
ok.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent ae){ String uname=jf1.getText(); String passw=jf2.getText(); String n; String m; try {Class.forName('com.mysql.jdbc.Driver').newInstance();Connection conn = DriverManager.getConnection('jdbc:mysql://localhost/authentication?' + 'user=root&password=letmein');PreparedStatement stmt=conn.prepareStatement('Select * from admin where id = ?');stmt.setString(1,uname);ResultSet rs=stmt.executeQuery();rs.next();n=rs.getString('id');m=rs.getString('pass');conn.close();if(n.equalsIgnoreCase(uname) && m.equalsIgnoreCase(passw)){ JOptionPane.showMessageDialog(null,'Username and password is correct');}else{ JOptionPane.showMessageDialog(null,'Username or password is not correct');} } catch(Exception ex) { System.out.println(ex); }}//end of actionperformed });//end of actionlistener
我有什么辦法可以一次完成兩個操作(在關(guān)閉與數(shù)據(jù)庫的連接之前)?如果沒有,有什么替代方法?
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. css3 - 圖片等比例縮放3. html - css3中多列高度 統(tǒng)一4. javascript - 使用angular 的ui-sref 中出現(xiàn)了中文參數(shù),點擊跳轉(zhuǎn)后瀏覽器的地址欄里出現(xiàn)轉(zhuǎn)義后的%AE....%a%45. css3 - 如何將網(wǎng)頁CSS背景圖高斯模糊且全屏顯示6. javascript - 一個賦值運算的問題7. css3 - animation屬性,safari瀏覽器不支持相關(guān)效果8. javascript - 求賜教:網(wǎng)易郵箱Web端模擬登錄看信的加密參數(shù)_ntes_nnid、_ntes_nuid9. css - jq有無現(xiàn)成函數(shù)改變rotateX/Y的deg10. javascript - QWebEngineView 如何爬 angular 的動態(tài)數(shù)據(jù)?
