[英]How to use, check and compare 'enter' key as an input from user, in my if statements. Using Java
[英]How to compare user input with my database in java
如標題所示,我非常努力地將用戶輸入與我的數據庫進行比較,並且它適用於真實輸入。 但是,當我的數據庫中不存在輸入時,我不知道下面的代碼有什么問題,請幫忙。
private class da implements ActionListener{
public void actionPerformed(ActionEvent e){
Connection con = null;
String url = "jdbc:mysql://localhost:3306/المكتبة";
String unicode = "?useUnicode=yes&characterEncoding=UTF-8";
try{
con = DriverManager.getConnection(url+unicode,"root","");
PreparedStatement upd = con.prepareStatement("SELECT * FROM library WHERE author =?'");
upd.setString(1,name.getText());
ResultSet rs = upd.executeQuery();
while(rs.next()){
String authorname = rs.getString("author");
String bookname = rs.getString("bookname");
String categort = rs.getString("category");
int isbn = Integer.parseInt(rs.getString("ISBN"));
String data = "اسم المؤلف: "+authorname+"\n"+"اسم الكتاب: "+bookname+"\n"+"التصنيف: "+categort+"\n"+"ISBN: "+isbn;
if(name.getText().equals(authorname))
txt.setText(data);
else
txt.setText("no matches");
問題與本節有關:
while(rs.next()){
// ... other code
if(name.getText().equals(authorname))
txt.setText(data);
else
txt.setText("no matches");
如果在您的數據庫中找不到name.getText()
的值,則rs.next()
將永遠不會返回 true。 由於您已將if
塊包含在 while 循環中,因此如果在您的數據庫中找不到匹配項,它將永遠不會執行。 您可以通過多種方法解決它,一種方法是執行以下操作:
boolean has_results = rs.next();
if(has_results){
do {
// ... your loop code
}while(rs.next());
}else {
text.setText("No Matches");
}
在此代碼中,如果對rs.next()
的第一次調用返回false
,則我們不知道從數據庫返回的任何內容。 否則,正常循環。 在這種情況下,我將循環改為后檢查do...while
循環,因為我們現在想在循環結束時檢查rs.next()
。
注意:此答案演示了另一種檢查結果集是否包含行的方法。
您應該在 if/else 之前關閉 while() 循環。
雖然它不是最漂亮的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.