みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Oracleで「文字が無効です」のエラーが出ます

Oracleで「文字が無効です」のエラーが出ます

JavaからOracleに接続して、SELECT文を発行していますが、何度試しても上記のエラーが出ます。
発行しているSELECT文を、SQLPlusから打ち込むとちゃんと実行できます。
何が悪いのか見当がつきません。
お知恵をお貸しください。
ちなみに、対象テーブルの項目はvarchar2とnumberだけの項目ばかりで、日本語は使ってません。
また、Oracle初心者です。

環境
端末:WindowsXP
Oracle:10g Express Edition ※文字コードはAL32UTF8
IDE:Eclipse3.5 ※設定-一般-ワークスペースのテキストファイルエンコードはUTF-8

投稿日時 - 2010-07-08 20:10:24

QNo.6024633

困ってます

質問者が選んだベストアンサー

Java内で生成したSQL文を見ないとなんとも言えないけど。

Javaでリテラル吐き出して編集してますかね?
select UserID, UserName from mstUser where UserID = '001'; みたいな。
条件によって 001 の部分を変化させるような。


だったらJavaでシングルクォートを吐き出すところを二重にしてみるとどうかな?
ダブルクォートでは無いよ。二重に書くことでシングルクォート一個と解釈されればOKのはず。

そうしておかないとSQL文全体を文字列で扱うんだろうから、シングルクォートの対応が崩れる。

つくりとしては以下のように作成。
select UserID, UserName from mstUser where UserID = ''001''; みたいな。

SQL文を文字列変数に格納するんだろうから
'select UserID, UserName from mstUser where UserID = ''001'';'

投稿日時 - 2010-07-08 22:39:27

補足

ありがとうございます。

おっしゃられているように、
JavaではWHEREの個所を条件により変化させて編集するようにしてます。

しかしながら、
SELECT * FROM TESTTBL;
みたいな、ごく単純なSQL文に試しに変えてみてもエラーになるので、
SQL文の問題ではないと認識してます。


よく解りませんが、
文字コード?、環境?、コネクション?当たりに問題がある場合はないのでしょうか?

投稿日時 - 2010-07-08 23:25:57

お礼

自己解決しました。
SQL文が間違ってました。
正確にはSQL文は間違ってなかったんですが、
最後のセミコロン(;)が不要でした。
セミコロンを削除したら動きました。

お騒がせしました。

投稿日時 - 2010-07-09 16:43:45

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

そのSQL文を記載してください。

SQL*Plusで動かしたものと、Java埋め込みor生成されたものを両方。

投稿日時 - 2010-07-08 20:18:24

補足

すいません。
諸事情で載せられませんが、
Javaで編集したSQL文をコピペしてSQLPlusで動かしたんで、
SQL文自体は問題ないと思います。
それに、試しにSQLiteに同じテーブルを作成して、接続させてみたところ、
正常にSQL文が発行できました。

投稿日時 - 2010-07-08 21:50:07