2017-03-29 6 views
0
String sql2="if not exists(select * FROM stock where productCode=?)\n" + 
        "Begin\n" + 
        "insert into stock " 
        + "(productName,quantity,currentQuantity,price,companyName,categoryName,productCode) " 
        + "values(?,?,?,?,?,?,?)\n" + 
        "End"; 
      PreparedStatement pst2 = con.prepareStatement(sql2); 
      pst2.setString(1,productCodeTextField.getText()); 
      pst2.setString(2,productNameTextField.getText()); 
      pst2.setString(3,quantityTextField.getText()); 
      pst2.setString(4,quantityTextField.getText()); 
      pst2.setString(5,priceTextField.getText()); 
      pst2.setString(6, (String) companyNameJComboBox.getSelectedItem()); 
      pst2.setString(7, (String) categoryNameJComboBox.getSelectedItem()); 
      pst2.setString(8,productCodeTextField.getText()); 
      int x=pst2.executeUpdate(); 
      if(x!=0){ 
       productCodeTextField.setText(""); 
       productNameTextField.setText(""); 
       quantityTextField.setText(""); 
       priceTextField.setText(""); 
       JOptionPane.showMessageDialog(null,"Product entered");  
      }else{ 
       JOptionPane.showMessageDialog(null,"Product already exists"); 
      } 

挿入前に既存の製品を正常に確認できたが、実行されたクエリに基づいて正しいメッセージを挿入できない。 executeUpdateは、挿入が行われていない場合でも常に値を返します。これを修正する方法。行が存在するかどうかチェックする場合は行を挿入するそうでない場合はメッセージを表示する

+0

mysqlとsql-serverは2つの異なるrdbmsです。正しいものにタグを付けてください。 – Ravi

答えて

1

あなたのために働くことが容易なソリューションがあります:

INSERT INTO stock 
(productCode, productName, quantity, price, companyName, categoryName) 
VALUES (?,?,?,?,?,?) 
WHERE NOT EXISTS 
    (SELECT * FROM stock WHERE productCode = ?) 
を:

  1. は、次のようにエントリがすでに

  2. 書き換えSQL2を存在するかどうかをチェックする最初のクエリを捨てます

  3. 追加:pst.setString(7, productCodeTextField.getText());

  4. executeUpdate()は、クエリの影響を受ける行数を示すintを返します。この変数を使用して、行が追加されたかどうかを判断します。変数!= 0の場合、成功メッセージが表示されます。

+0

キーワード "ignore"を追加すると、 "into"というキーワードの近くに不正な構文が表示されます –

+0

@MohitJoshiエラーを生成している完全な文字列を貼り付けてください。 – Coop

+0

insert into stockerial into product(productCode、productName、quantity、price、companyName、categoryName)values(?、?、?、?、?、?) –

関連する問題