2016-07-08 11 views
0

新しいレコードを入力する前にシステムにレコードが既に存在するかどうかを確認するコードですSQLデータベースに追加します。新しいレコードをデータベースに挿入しようとしていますが、そのレコードがまだ存在しないが動作していない場合

  String sql = "INSERT INTO Stock (name, cost_price, selling_price, numberinstock, supplier) VALUES (?, ?, ?, ?,?) " 
         + "Select name" 
         + " from Stock" 
         + "Where not exists (select * from Stock" 
         + "where name = "+NameTextField+")"; 

私はJavaのmy sqlおよびderbyデータベースを使用しています。 私がしようとしているのは、新しい項目がシステムに入力されたときに、その項目が既にシステムに入っているかどうかを確認するSQL文です。

あなたはinsert . . . valuesを使ってやりたいことができないこのSQL文

+0

を使用してみてください代わりに 'INSERT INTO table(c1、c2、...)SELECT ...'を実行してください。 – jarlh

+0

"ストック"と "どこ"の間にスペースがないかの理由の1つです。質問をするときに、スローされたエラーのような関連情報をすべて含める必要があります。 – fdreger

+0

私が得る唯一のエラーは、SQLエラーがあるというエラーです。 – Pirates

答えて

3

の何が問題になっています。代わりにinsert . . . selectを使用してください。コードは次のようになります。

INSERT INTO Stock(name, cost_price, selling_price, numberinstock, supplier) 
    Select ?, ?, ?, ?, ? 
    from sysibm.sysdummy1 
    Where not exists (select * from Stock where name = "+NameTextField+"); 

をただし、あなただけの他のすべてのように、パラメータとして名前の2番目の参照を渡す必要があります。

INSERT INTO Stock(name, cost_price, selling_price, numberinstock, supplier) 
    Select ?, ?, ?, ?, ? 
    from sysibm.sysdummy1 
    Where not exists (select 1 from Stock where name = ?); 
+1

ここにいくつかの値を追加すると、Gordon Linoffは言っています。あなたのアプリケーションはSQLインジェクションを受けやすくなります。 –

0

はトリガー

Create Trigger Modified_Order_Trigger 
    On Orders 
    After Update --as per youe need "insert, delete, update" 
    AS 

    Insert Into tablename (tables fileds) 
     SELECT tablefileds 
     FROM INSERTED 
関連する問題