2013-01-10 138 views
1

我需要檢查數據庫中是否存在數據庫下的匯款ID,如果該框不存在,那麼我輸入那麼我需要顯示消息,該框不存在,但如果它不將它應該插入新的對話框我已經寫了一些代碼,但它的示值誤差檢查數據庫中是否存在該記錄

private void txtboxnoFocusLost(java.awt.event.FocusEvent evt) { 
    DBUtil util = new DBUtil(); 

    try { 
     Connection con = util.getConnection(); 
     PreparedStatement stmt = con.prepareStatement(
      "select box_no from dbo.soil_det where rm_id = ? and box_no = ?"); 
     stmt.setLong(1, Long.parseLong(tf_rm_id.getText())); 
     stmt.setString(1, (txtboxno.getText()));  
     ResultSet rs=stmt.executeQuery(); 
     while(rs.next()){ 
      rs.equals().txtboxno.getText()); 
     } 
     JOptionPane.showMessageDialog(rootPane, "hello!S"); 
    } catch (Exception ex) { 
     Logger.getLogger(DATAENTRY.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

它可能應該stmt.setString(2,... – pgras

+0

其實有什麼錯誤,你都拿到? – Rahul

回答

1

試試這個代碼

private void txtboxnoFocusLost(java.awt.event.FocusEvent evt) { 
DBUtil util = new DBUtil(); 

try { 
    Connection con = util.getConnection(); 
    PreparedStatement stmt = con.prepareStatement(
     "select box_no from dbo.soil_det where rm_id = ? and box_no = ?"); 
    stmt.setLong(1, Long.parseLong(tf_rm_id.getText())); 
    stmt.setString(2, (txtboxno.getText()));  
    ResultSet rs=stmt.executeQuery(); 
    bool recordAdded = false; 
    while(!rs.next()){    
     /// Do your insertion of new records 
     recordAdded = true; 
    } 
    if(recordAdded){ 
     JOptionPane.showMessageDialog(rootPane, "Record added"); 
    }else{ 
     JOptionPane.showMessageDialog(rootPane, "Record already exists"); 
    } 
} catch (Exception ex) { 
    Logger.getLogger(DATAENTRY.class.getName()).log(Level.SEVERE, null, ex); 
} 
0

您需要從ResultSet如得到適當的記錄

boolean found = rs.getString(1).equals().txtboxno.getText()); 

目前你的ResultSet對象本身比較簡單的字符串,這是行不通的。上述拉從ResultSet第一個記錄和執行上的比較(注:您的數據類型可能會有所不同,您可能需要rs.getInt(1)等)

也許它在你的情況足以只是爲了檢查,如果你有一個ResultSet結果(通過rs.next()

+0

也rs.wasNull()也需要? – pratikch

0

或者你可以使用一個計數:

String query = "select count(*) 
from dbo.soil_det where rm_id = ? and box_no = ?"; 

然後執行查詢後,你得到

計數0

使用,你可以決定顯示給用戶

0

很首先,你必須使用SQL如果計數大於零,則像已經存在不插入記錄和顯示信息獲取計數和其他一部分信息插入記錄。看下面的例子

private boolean findCount(int rm_id,String box_no) 
{ 
     int count=0; 
    //write query here 
    count = assign query result; 
    //check count 
if(count>0) 
{ 
    return false;//records exists 
}else{ 
    return true;//records do not exists 
} 

}

public void insertData() 
{ 
    if(findCount(1,"1")){//pass values 
     //Write down your insert logic 
    }else{ 
     JOptionPane.showMessageDialog(rootPane, "Records Already Exists"); 
    } 
} 

注:朋友在你的榜樣,你沒有寫插入邏輯。只有選擇是有

0

首先,你可以在數據庫表上添加一個唯一的約束(rm_id,box_no),這是一件好事情。

然後,您可以簡單地嘗試插入框並捕獲異常並檢查它是否違反了唯一約束。

另一種選擇(仍保持唯一約束)將是使該只插入如果不存在,你可以用google搜索「SQL INSERT如果不存在」中找到一些例子更復雜的SQL INSERT語句...

相關問題