java
  • sql
  • jdbc
  • 2017-08-23 5 views -8 likes 
    -8

    マイ列顧客テーブルでこのクエリが機能しない理由は何ですか?ガット:MySQLSyntaxErrorException不明な列を

    cusid cusname cusadress paidamount email 
    
    cus123 damidu kegalle 45   adfff 
    

    これは私のJavaクエリ

    String query = "UPDATE `customer` SET `cusname`='"+jTextField_name.getText()+"',`cusadress`='"+jTextField_adress.getText()+"',`paidamount`='"+jTextField_amount.getText()+"',`email`="+jTextField_emailuser.getText()+" WHERE `cusid` = "+jTextField_id.getText(); 
    executeSQlQuery(query, "Updated"); 
    

    このアップデートの理由が機能していないされて何

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'cus123' in 'where clause' 
    

    エラー

    あり、 insert文とdelete文は動作しますか?以下、このような

    +3

    1)SQLインジェクションの可能性2)SQL文字列を連結する代わりにパラメータバインディングを使用する3)** 'cus123'!= '' cus123'' ** – lad2025

    +0

    プリペイドステートメント –

    +1

    を使用してください。 preparedStatementを使用しようとします。 – msagala25

    答えて

    3

    使用のPreparedStatement:

    String updateQuery = "UPDATE customer SET cusname=?,cusadress=?,paidamount=?,email=? WHERE cusid=?"; 
    
    PreparedStatement stmt=con.prepareStatement(updateQuery); // con is reference variable of Connection class 
         stmt.setString(1, jTextField_name.getText()); 
         stmt.setString(2, jTextField_adress.getText()); 
         stmt.setInt(3, jTextField_amount.getText()); 
         stmt.setString(4, jTextField_emailuser.getText()); 
         stmt.setString(5, jTextField_id.getText()); 
    

    は、この情報がお役に立てば幸いです。

    +0

    'cusid'は数値ではなく、文字列ベースであると私には思われます。しかし、 'paidamount'はNumericのように見えます –

    +0

    @AlexK清算をありがとう。私は仮定していた、それはNumbericでなければならない。それを更新する – sForSujit

    +0

    私はあなたに同意します。それはちょっとした発言でした:) –

    関連する問題