2017-02-19 18 views
-3

newdeviceという名前のデータベーステーブル名にデータを挿入しようとしました。 私のクエリは次のとおりです。データベースにデータを挿入中にエラーが発生しました

String query= uni +"," + nam +","+ temp + "," + vendor + "," + invoice +","+ dop +"," + cost ; 
       res=stm.executeQuery("INSERT INTO newdevice " + "(uniqueid , device , device_status , vendor_name , invoice , dop , cost)" + " VALUES(" + query +")"); 

しかし、これをやっている間、私はこのエラーに直面していました:

org.firebirdsql.jdbc.FBSQLException:GDS例外を。 335544569.動的SQLエラー SQLエラーコード= -104 トークンが不明 - 行1、列106

(、)そのエラーはコンマで表示されます。

答えて

0

引用符に問題があります。 私は文(uniqueid , device , device_status , vendor_name , invoice , dop , cost)を二重引用符で囲まないでください。この二重引用符を削除してみてください。

2

問題は、文字列値などの引用符が欠けている可能性がありますが、そのような値を連結しないでください。それはあなたにSQLインジェクションを開きます。私はsetXXXの実際のデータ型で、ランダムな推測をした

try (PreparedStatement pstmt = connection.prepareStatement(
     "INSERT INTO newdevice (uniqueid, device, device_status, vendor_name, invoice, dop, cost) VALUES(?, ?, ?, ?, ?, ?, ?)" 
    pstmt.setInt(1, uni); 
    pstmt.setString(2, nam); 
    pstmt.setInt(3, temp); 
    pstmt.setString(4, vendor); 
    pstmt.setInt(5, invoice); 
    pstmt.setInt(6, dop); 
    pstmt.setBigDecimal(7, cost); 
    pstmt.executeUpdate(); 
} 

注:代わりに、あなたはこのように、パラメータでPreparedStatementを使用する必要があります。

+0

私はPrepapredStatementについて学ぶことができるので、このhttp://stackoverflow.com/jp/documentation/jdbc/2939/preparedstatement#t=201702191955028007576を参考にしていいと思います。 –

+0

ありがとうございました。 –

+0

@Rajkumar私の回答が問題の解決に役立った場合は、チェックマークをクリックして問題を解決してください。 –

関連する問題