2012-09-16 60 views
0

MySQL的數據我要檢查新輸入的數據是否已經在表中比較整數文本字段值在Java

代碼:

txtNo = new JTextField(); 
{ 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String srcurl1  = "jdbc:mysql://localhost:3306/DB_name"; 
     Connection con  = DriverManager.getConnection(srcurl1,"root","paswrd"); 
     Statement stmt1  = con.createStatement(); 
     ResultSet rs1  = stmt1.executeQuery("select No from bank where No='"+txtNo.getText()+"' "); 

     int ch =rs1.getInt("No"); 
     int ch4= Integer.parseInt(txtNo.getText()); 

     if(ch==ch4) // input 58 == 58 
     System.out.println("already exits"); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception:"+e); 
    } 
} 

錯誤: Exception:java.sql.SQLException: Illegal operation on empty result set.

+0

什麼是在您的數據庫中的列*沒有*的SQL類型?它被聲明爲一個整數或一個varchar? – Sujay

+0

NO被聲明爲varchar –

回答

0

你需要檢查,如果結果集元素與否:

while(rs1.next()) 
{ 
    int ch = rs1.getInt("No"); 
    // ... 
} 
+0

while(rs1.next()){chl = rs1.getInt(「No」); int ch4 = Integer.parseInt(txtNo.getText()); if(ch == ch4){ .... }} 仍然收到異常,我錯了 –

0

您需要首先檢查ResultSet以查看它是否包含行:

if (rs1.next()) { 
    int ch =rs1.getInt("No"); 
    ... 
} 
0

當select語句返回一個空集合時,會得到此異常。添加一個try/catch塊,它根據知道數據不在catch塊中的表中。

0

檢查數據庫中是否存在特定的記錄如下可能只是最簡單的方法:

Select 1 from bank where No = [your_supplied_value] 

如果查詢使用提供的數據在數據庫中找到一行或返回空結果集,則該查詢將返回1。因此,您需要檢查的是在結果集中是否返回ANY值或是否爲空格。

下面是一個示例代碼,您開始:

txtNo = new JTextField(); 
{ 
    try { 
     String compareText = txtNo.getText().trim(); 

     if(compareText.length() > 0){ 
      Class.forName("com.mysql.jdbc.Driver"); 
      String srcurl1  = "jdbc:mysql://localhost:3306/DB_name"; 
      Connection con  = DriverManager.getConnection(srcurl1,"root","paswrd"); 
      Statement stmt1  = con.createStatement(); 
      ResultSet rs1  = stmt1.executeQuery("select 1 from bank where No='"+txtNo.getText()+"' "); 

      boolean isPresent = rs1.next(); 

      if(isPresent){ 
       System.out.println("Already exists!!"); 
      } 
     } 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception:"+e); 
    } 
} 

我希望這不是你最後的代碼,因爲那裏是多個問題:

  • 你不管理您的資源正確。完成查詢數據庫後,應考慮關閉結果集,語句和連接對象。

  • 請注意,我檢查了JTextField中的文本是否爲空。當知道文本字段沒有任何價值時,這是防止調用數據庫的好方法。

  • 我會建議使用PreparedStatement而不是語句來查詢數據庫。

0

ResultSet第一行之前最初定位。因此,在致電getXXX()方法之一之前,您需要致電next()將其移至下一行(並檢查它是否返回true)。