簡體   English   中英

jdbc中的結果集返回true

[英]resultset in jdbc is returning true

我寫了下面的代碼,即使沒有結果,結果集(這里標記為rs3)也返回true。我想檢查是否沒有結果,那么用戶必須再次輸入正確的電話制造商。我要去哪里錯了?

 BufferedReader r2 = new BufferedReader(new InputStreamReader(System.in)); 
 String phone_manufacturer="";
 boolean value1=true;
 while (value1) {
    System.out.println("\nPlease select your choice of phone manufacturer " );
    String line = r2.readLine();
    if (line.matches("[A-Za-z ]+$")) {
        phone_manufacturer = line;
        final String sql3 = "SELECT * from phone_model WHERE phone_type = '"+phone_type_choice+"' and manufacturer ='"+phone_manufacturer+"'";
        st3 = connection.createStatement();
        rs3= st3.executeQuery(sql3);
        if(rs3!=null){
              System.out.println("Model"+"      "+"Manufacturer"+""+"Phone_type");
             while(rs3.next()){
                String modell  = rs3.getString("Model");
                String manufacturer = rs3.getString("Manufacturer");
                String phone_type = rs3.getString("Phone_type");
          System.out.format("%-25s%-20s%-10s\n",modell,manufacturer,phone_type);
            }
         }

         else
          {
       System.out.println("The manufacturer isn't avaiable for the phone type choosen.Please try again");
           value1=true;
           continue;
             }

     value1=false;
        }else
           {
           System.out.println("\nPlease enter correct manufacturer name " );
                            value1=true;
                            continue;

                          }
                          break;
                          }

采用 :

if (!rs3.next() ) {
    System.out.println("no data");
}

最初,ResultSet的光標指向第一行之前,如果對next()的第一次調用返回false,則ResultSet中沒有數據。

如果您使用的是新返回的ResultSet,其光標指向第一行之前,則更簡單的檢查方法是調用isBeforeFirst()。

if (!rs3.isBeforeFirst() ) {    
 System.out.println("No data"); 
} 

最好使用准備好的語句來避免sql注入:

 PreparedStatement updateemp = connnection.prepareStatement
      ("SELECT * from phone_model WHERE phone_type =? and manufacturer=?");
      updateemp.setString(1,phone_type_choice);
      updateemp.setString(2, phone_manufacturer);

如何使用准備好的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM