0

私は現在、Javaでスクリプトを作成して、長いプレーンテキストファイルからデータベースに大量の本をインポートしています。すべての本を本オブジェクトに解析し、データベースに書き込もうとしています。ただし、次の文字列でカンマの欠落例外「ORA-00917:カンマの欠落」が発生します。

INSERT INTO THE_TABLE VALUES( 'Yes' , '50388,50389' , 'Humanities and Performing Arts' , 'Required' , 'Ember, Carol & Ember, Melvin' , 'Human Culture' , '2nd' , '2012' , 'Pearson' , 'This is for CRN's 4879 & 2486' , '9780205251438' , '50' , 'null' , 'null' , 'null' , 'Spring 2013' , 'ROTN 4270' , 'Required' , 'Ember, Carol & Ember, Melvin,' , 'Human Culture' , 'Pearson,' , '2nd' , 'Edition,' , '2012.' , 'null' , 'Not Applicable' , 'Not Applicable' , 'Not Applicable' , 'Spring 2013' , 'ANTH 270' , '50388,50389' , 'Humanities and Performing Arts' , 'Required' , 'This is for CRN's 15454 & 48456, 'Ember, Carol & Ember, Melvin,' , 'Human Culture' , 'Pearson,' , '2nd' , 'Edition,' , '2012.' , '9780205251438' , '50' , 'null' , 'null' , 'Not Applicable' , 'Not Applicable' , 'Not Applicable' , 'null' , 'null' , 'null' )

カンマがどこにないのかわかりません。この例外には別の理由がありますか?

4

3 に答える 3

4

エラーは明らかです。挿入ステートメントのどこかにコンマがありません。

ただし、 SQLインジェクションを防ぐためにJDBCを使用してSQLクエリを実行する場合は、単純なステートメントではなく、PreparedStatementを使用することを強くお勧めします。

String query="Insert into table values(?,?);";
PreparedStatement stmnt = conn.preparedStatement(query);
stmnt.setString(1, "val1");
stmnt.setString(2, "val2");

Javaでpreparedstatementを使用する方法についてはこちらを確認してください

于 2012-12-06T17:12:25.557 に答える
2

, 'This is for CRN's 15454 & 48456,

すぐそこに。
(48456)の後にダニを逃したことに注意してください。おそらく(CRNの)部分のためです。

また、recordプログラミングを容易にするためにを使用することをお勧めします。そのような値を挿入するのは面倒です。:)良い仕事を続けてください。

于 2012-12-06T17:09:26.123 に答える
0

'Ember, Carol & Ember, Melvin,'おそらく問題を引き起こしています試してみてください'Ember, Carol &' || ' Ember, Melvin,'

于 2012-12-06T17:12:04.537 に答える