プロが教えるわが家の防犯対策術!

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

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

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

A 回答 (2件)

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'';'

この回答への補足

ありがとうございます。

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

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


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

補足日時:2010/07/08 23:25
    • good
    • 1
この回答へのお礼

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

お騒がせしました。

お礼日時:2010/07/09 16:43

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



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

この回答への補足

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

補足日時:2010/07/08 21:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A