2

如果框不存在,我需要在我输入的汇款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);
    }
4

5 回答 5

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);
}
于 2013-01-10T12:38:36.880 回答
0

您需要从ResultSet例如获取适当的记录

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

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

在您的情况下,也许它足以检查您是否有ResultSet结果(通过rs.next()

于 2013-01-10T11:56:34.020 回答
0

或者您可以使用计数:

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

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

                   rs.getInt(1)

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

于 2013-01-10T12:07:04.963 回答
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");
     }
}

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

于 2013-01-10T12:10:09.220 回答
0

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

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

另一种选择(仍然保持唯一约束)是制作一个更复杂的 SQL 插入语句,仅在不存在时插入,您可以谷歌“如果不存在 sql 插入”来查找一些示例......

于 2013-01-10T12:35:32.403 回答