2016-05-24 17 views
3

ユーザが削除フィールドに間違ったIDを入力したときに、ポップアップする際にエラーが発生したかった。しかし、間違ったIDが入力されたとしても、依然として照会は続行されますが、データは削除されません。ここに私のコードです:データベースで削除が成功したかどうかを確認するには?

String value = jTextField19.getText(); 

if (value == null || "".equals(value)) { 
    JOptionPane.showMessageDialog(null, "The field is blank!"); 
} else { 
    theQuery("DELETE FROM inventorydb WHERE item_id=('"+jTextField19.getText()+"') AND item_id IS NOT NULL"); 
} 

theQuery方法:すべての

private void theQuery(String query) { 
    Connection con = null; 
    Statement st = null; 
    try { 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/inventory", "root", ""); 
     st = con.createStatement(); 
     st.executeUpdate(query); 
     JOptionPane.showMessageDialog(null, "Done!"); 
    } catch (Exception ex) { 
     JOptionPane.showMessageDialog(null,"Error!"); 
    } 
} 
+0

[値]の実行時の値とは何ですか? – David

答えて

7

まず:史上が直接、ユーザの入力からSQLクエリを構築する代わりに、プリペアドステートメントを使用しないでください。あなたがSQLインジェクションについて知らないなら、あなたはすべきです。

JDBCを使用している場合は、#executeUpdate()の結果を調べて、影響を受ける行の数を確認できます。それがゼロだったら、それは間違っていたと言うことができますid

これは、メソッドの定義である:

public int executeUpdate(java.lang.String sql) 

戻り値は:

DDLステートメントを使用した場合に影響を受けた行の数、または0を示しint

手元のプログラムで

が、あなたは、単にこれを行うことができます:

int deleted = st.executeUpdate(query); 
if (deleted == 0) { 
    JOptionPane.showMessageDialog(null, "Nothing to delete!"); 
    return; 
} 
+0

あなたは簡単に説明することができます、私はJavaプログラミング言語で私は新しいが、私は非常にこれを学ぶことを熱望しています。 –

+0

https://en.wikipedia.org/wiki/SQL_injectionと義務的なXKCDリファレンス:https://xkcd.com/327/ – meskobalazs

+0

btwこれはユーザーがボタンをクリックするたびに呼び出すtheQueryステートメントです:private void theQuery(Stringクエリ){ 接続con = null; ステートメントst = null; { con = DriverManager.getConnection( "jdbc:mysql:// localhost:3306/inventory"、 "root"、 ""); st = con.createStatement(); st.executeUpdate(query); JOptionPane.showMessageDialog(null、 "完了!"); } catch(例外ex){ JOptionPane.showMessageDialog(null、 "エラー!"); } } –

関連する問題