2017-04-07 11 views
2

ほんの少しのヘルプを探しています。JAVAフォームのSQL構文getText();

Javaでアプリケーションを作成し、jTableを使用してmyphpデータベースからデータを収集すると、SQLコマンドの挿入、更新、削除を使用しているため、ユーザーはテーブルのデータを操作できます。

削除は完全に機能しますが、私は自分のアップデートと挿入コマンドに問題があります。誰かが( "+")を間違って使用しているかどうかを知ることができますか?誰もがいくつかの光を当てることができれば:)

おかげ

INSERTのCODE:!

String query = "INSERT INTO `supplier`(`Company Name`, `Contact`, `Address`, `Postcode`, `Phone`) VALUES ('"+jTextField_SupplierCompany.getText()+"','"+jTextField_SupplierContact.getText()+"',"+jTextField_SupplierAddress.getText()+"','"+jTextField_SupplierPostcode.getText()+"',"+jTextField_SupplierPhone.getText()+")"; 

のUPDATE CODE:

String query = "UPDATE `supplier` SET `Company Name`='"+jTextField_SupplierCompany.getText() + "',`Contact`='"+jTextField_SupplierContact.getText() + "',`Address`="+jTextField_SupplierAddress.getText() + "',`Postcode`="+jTextField_SupplierPostcode.getText() + "',`Phone`="+jTextField_SupplierPhone.getText() + " WHERE `ID` = "+jTextField_SupplierID.getText(); 

ERROR:

エラーが投げているが、「UPDATE」文のWHERE句の誤用である...一部に明らかである可能性があり、しかし、それのまわりで私の頭を取得傾けます。

+2

は@あなたが歓迎されている 'PreparedStatement' –

答えて

4

構文エラーのこれらのタイプ、または任意のSQLインジェクションを回避するために、あなたの代わりにPreparedStatementを使用することができ、それはとても簡単なので、helfulです:

String query = "INSERT INTO `supplier`(`Company Name`, `Contact`, `Address`, `Postcode`, `Phone`) " 
    + "VALUES (?, ?, ?, ?, ?)"; 
try (PreparedStatement pstm = conn.prepareStatement(query)) { 
    pstm.setString(1, jTextField_SupplierCompany.getText()); 
    pstm.setString(2, jTextField_SupplierContact.getText()); 
    pstm.setString(3, jTextField_SupplierAddress.getText()); 
    pstm.setString(4, jTextField_SupplierPostcode.getText()); 
    pstm.setString(5, jTextField_SupplierPhone.getText()); 

    pstm.executeUpdate(); 
} 

あなたが''とあなたの文字列を閉じるのを忘れているのであなたのエラーが起こりますあなたのクエリをチェックして、あなたが表示されます。

+"', " + jTextField_SupplierAddress.getText() + "' 
//--^--------------------------------------------^ 
+0

を使用することを学ぶ、私はすぐに、私はちょうどそのエラーを投げて、やっていること NOアイデアは、 は私だけで何か、(クエリ)を確認することはできませんに話し –

+0

をお楽しみTipping44ください。 私はなぜそれがデータベースの2つのフィールドを更新するのか分かりませんが、それ以上はありません:/ – Tipping44

+0

いいえ私の場合は( "INSERT INTO?、?、VALUES(jTextField_SupplierCompany.getText()、?、?)編集@ Tipping44 –

0

クエリに

でのためにこれを使用する単一引用符を逃しましたSERT

ストリングクエリは= '+ jTextField_SupplierCompany.getText()+ " ' "+ jTextField_SupplierContact.getText()+"'「(Company NameContactAddressPostcodePhone)VALUES(supplier。INSERT INTO"'、 '+ "jTextField_SupplierAddress.getText()+"'、 "" + jTextField_SupplierPostcode.getText()+ "'、" "+ jTextField_SupplierPhone.getText()+"') ";

使用して、この更新用

文字列のクエリ= "UPDATE 'サプライヤー' SET「会社名='"+jTextField_SupplierCompany.getText() + "',問い合わせ='"+jTextField_SupplierContact.getText() + "',住所='"+jTextField_SupplierAddress.getText() + "',郵便番号='"+jTextField_SupplierPostcode.getText() + "',電話='"+jTextField_SupplierPhone.getText() + "' WHERE ID` = ' "+ jTextField_SupplierID.getText()+"'" ;

+0

-1あなたはまだSQLインジェクションにユーザーを開放し、あなたの投稿を正しく書式設定することさえ気にしない。 –

+1

SQLインジェクションを回避するには、プリペアドステートメントを使用する方が良いです... –

+0

正確に!あなたがそれを知っているならば、あなたの答えをベースにしないでください。 –