0

Java でこの SQL クエリに対して次の例外が発生します。

 statement2.executeUpdate("INSERT INTO visit_header " 
+ "VALUES ('"+visitnumber+"','"+date+"','"+cookie+"','"+ip+"','"+duration+"','"+pageref
+"','"+startpagename+"','"+endpagename+"','"+pgvw+"','"+starttime+"','"+endtime+"','"
+country+"','"+state+"','"+city+"','"+browser+"','"+os+"','"+device+"')");

例外は次のとおりです。

java.sql.SQLException: ORA-01861: literal does not match format string.

どこが間違っているのかわかりません。

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

4

2 に答える 2

2

まず、文字列を連結して SQL ステートメントを作成するべきではありません。これにより、SQL インジェクションのハッキングにさらされることになります。PreparedStatement を使用して値を設定する必要があります。これにより、JDBC はそれらを適切にエスケープできます。

このエラーは、開始時刻と終了時刻の形式が間違っていることが原因である可能性が最も高いです。おそらく、スタック トレースと、挿入しようとしているサンプル データを表示する必要があります。このコード行の直後に区切りを入れ、結果の連結文字列をコピーして、DB で直接実行することをお勧めします。

于 2013-04-24T12:06:29.933 に答える
0

pgvw のようなフィールドに ' または \ が含まれているか、使用する前に日付と開始時刻がフォーマットされていない可能性があります。

于 2013-04-24T12:04:42.287 に答える