2017-02-08 6 views
0

テーブルのすべてのデータを表示しようとしていますが、テーブルは正常です。私が持っている問題は、異なるIDを持つ同じ名前を防ぐことです。ここで私はデータを作成しようとしましたmysqlで異なるIDを持つ同じ名前を取得するのを防ぐ方法Java

private void AddbtActionPerformed(java.awt.event.ActionEvent evt) {          
    String id = idFld.getText() ; 
    String item = ADDfld.getText(); 
    String amount = AMOUNTfld.getText(); 
      try { 

    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/isdb","root",""); 

    String query = "Insert into item (id,NAME,AMOUNT) values (?,?,?)"; 

    pst = con.prepareStatement(query); 

     pst.setInt(1, Integer.parseInt(id)); 
    pst.setString(2, item); 
    pst.setString(3,amount); 
     pst.execute(); 

} catch (SQLException ex) { 

    JOptionPane.showMessageDialog(null, ex); 

} 

     ADDfld.setText(""); 
     idFld.setText(""); 
     AMOUNTfld.setText(""); 
     updateCombo(); 
     update_Table(); 

私のコードですが、それは私が

enter image description here

これを防ぐために、どのように任意のアイデアを防ぐためにしようとしている何である異なるIDと同じ名前を許可していますか?助けてください。

答えて

3

あなたは、あなたのテーブルに同じ名前を持つ複数の製品を使用しない場合は、名前欄、例えば上unique制約を追加することができますが:

ALTER TABLE items ADD CONSTRAINT name UNIQUE (name); 

これは、結果、重複した名前で挿入を防止しますMySQLIntegrityConstraintViolationExceptionにあります。行うには

もう一つの方法は、項目がinserにユーザーを許可する前に、アイテムが存在するかどうかなどをチェックすることです:

SELECT count(*) as count FROM items WHERE name = ? 

カウントがゼロ以上である場合には、ユーザーに適切なエラーメッセージを表示することができます。

関連する問題