2011-05-17 13 views
1

これはなぜ機能しないのでしょうか?oracleに行を挿入する際に問題が発生する

表の名前は、TEST_COLUMNというプライマリキーの列が1つのみ、TESTTABLEです。私はそれが何かばかだと確信していますが、私は尋ねると思った。 私はすでにデータベースに接続されていますので、私はそのコード

Statement statement = connection.createStatement(); 
String test = "test"; 
statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES (" + test + ")"); 

を提供する心配はありませんでした私はそうしようと、それはvarchar型の列であると仮定しています

ORA-00984: column not allowed here 

答えて

5

私は、このエラーを与える:

statement.executeUpdate("INSERT INTO TESTTABLE (TEST_COLUMN) VALUES ('" + test + "')"); 

データの前後に一重引用符があることに注意してください。

+0

私はすでに何が違いますか? – auwall

+2

一重引用符は間違いなく頭の問題を釘付けにしました。 @auwall SQLインジェクションを避けるには、['PreparedStatement's(http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html)を参照してください。 – pickypg

+0

@auwall:Oracleの文字データ定数は、単一引用符で囲む必要があります。これは、この文でOracleに指定するものです。一般に、Oracleでこのように動的文を作成することは、@ pickypgの状態とパフォーマンスの問題の両方の理由から、悪い考えです。可能であれば、バインド変数を使用する必要があります。 – DCookie

関連する問題