检查数据库中是否存在记录

时间:2013-01-10 11:54:16

标签: java sql

我需要在我输入的汇款ID下检查数据库中是否存在no框,如果该框不存在那么我需要显示该框尚未存在的消息,但如果它没有应该插入新的盒子我写了一些代码,但显示错误

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);
    }

5 个答案:

答案 0 :(得分:2)

试试此代码

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);
}

答案 1 :(得分:0)

您需要从ResultSet例如

获取相应的记录
boolean found = rs.getString(1).equals().txtboxno.getText());

目前,您只是将ResultSet对象本身与字符串进行比较,但这不起作用。上面从ResultSet拉出第一条记录并对其进行比较(注意:您的数据类型可能不同,您可能需要rs.getInt(1)等。)

在您的情况下,或许仅仅检查您是否有ResultSet结果(通过rs.next()

答案 2 :(得分:0)

或者您可以使用计数:

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

然后在执行查询后,您将获得

计数
                   rs.getInt(1)

使用它可以决定向用户显示哪些信息

答案 3 :(得分:0)

非常首先如果count大于零,则必须使用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");
     }
}

注意:您的示例中的朋友您还没有编写插入逻辑。只选择那里

答案 4 :(得分:0)

首先你可以在db表上添加一个对列(rm_id,box_no)的唯一约束,这无论如何都是一件好事。

然后你可以简单地尝试插入框并捕获异常并检查它是否违反了唯一约束。

另一个选项(仍然保持唯一约束)将是一个更复杂的SQL插入语句,只有在不存在的情况下插入,你可以google“sql insert if if not exist”来找到一些例子......