-1

エラー:

キャッチされた例外: java.sql.SQLException: 不正な整数値: 行 1 の列 'dedId' の '[Ljava.lang.String;@26fd19c6' データベースに接続できませんでした

プログラム:

public void updateDeduction(int empId, String[] dedId, String dedName, String dedDate, String dedAmount) throws SQLException{
    stmt = conn.createStatement();
    String updateString="INSERT INTO deductions (empId,dedId,dedName,dedDate,dedAmount) VALUES (";
    updateString +="'"+empId+"', ";
    updateString +="'"+dedId+"', "; 
    updateString +="'"+dedName+"', ";
    updateString +="'"+dedAmount+"', ";
    updateString +="CURDATE())" ;
    stmt.executeUpdate(updateString); 
    return;
}
4

1 に答える 1

2

パラメータdedidは文字列の配列です。実行したとき

updateString +="'"+dedId+"', ";

文字列に変換されました[Ljava.lang.String;@26fd19c6

使用する配列要素を特定する必要があります。

他の人がコメントしているように、このようなユーザー提供のテキストを連結してステートメントを作成することは、SQL インジェクションを介してハッキングされる確実な方法です。PreparedStatement代わりに、プレースホルダーを使用する必要があります。

INSERT INTO deductions (empId,dedId,dedName,dedDate,dedAmount) VALUES (?,?,?,?,?)
于 2013-01-17T07:36:37.680 に答える