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

非常に最初にカウントがゼロより大きい場合、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

または、カウントを使用できます。

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

次に、クエリを実行した後、カウントを取得します

                   rs.getInt(1)

それを使用して、ユーザーに表示する情報を決定できます

于 2013-01-10T12:07:04.963 に答える
0

最初に -- db テーブルに -- 列 (rm_id、box_no) に一意の制約を追加することができます。

次に、ボックスを挿入して例外をキャッチし、それが一意の制約に違反しているかどうかを確認するだけです。

別のオプション (まだ一意の制約を維持する) は、存在しない場合にのみ挿入するより複雑な SQL 挿入ステートメントを作成することです。「存在しない場合は sql 挿入」をググっていくつかの例を見つけることができます...

于 2013-01-10T12:35:32.403 に答える