StatementクラスのexecuteQueryメソッドを使用したSQLの発行について教えてください。
JavaでMySQLのデータベースからデータを取得するため、
executeQueryメソッドを使用してSQLの発行を行ったのですが、select文が正常に実行されずに困っています。(where句の条件が引っかからずに困っています。)
【前提】
・カラム「name」の値に「name(nameという文字)」が入っている状態。
・INT型、CHAR型で定義されたカラムの値は取得できる
・VARCHAR型で定義された、カラムの値が取得できない
【状況】
VARCHAR型で定義された、カラムの値が取得できない場合というのが、java側で、
stmt.executeQuery("SELECT * from customer where name='name'") というようにSQL文を発行した場合です。
MySQLのコマンドプロンプトからダイレクトに投げた場合や、
またDBViewerを使用した場合は、Where句の「name='name'」で引っかかったデータが正常に返ってくるのですが、
Javaから発行した場合のみ「VARCHAR型で定義されているカラムの値が取れない」という状況なのです。
(考えられることとしては、SQL発行時「SELECT * from customer where name='name'」 の 「'name'」が、別の何かに変わっているのかな?(文字コードなどが関係しているのか?)など考えているのですが、解決できず困っております。)
一体どこに問題があるのでしょうか?
(CHAR型、INT型のデータは正常にJava側で読めるのに、VARCHAR型の値をwhere句にした場合に限って、正常にデータ抽出できない、という点が腑に落ちないのですが・・・ SQLエラーを吐く訳ではなく、抽出条件が成立していない形なのです)
【実行環境】
・Windows XP Pro
・eclipse3.4(all in one eclipse)
・Java1.6
・TomCat6.0
・MySQL5.0 (文字コード:UTF-8)
No.2ベストアンサー
- 回答日時:
質問の内容だけですと問題箇所の特定は困難なので、原因を調べるためにはMySQLサーバが出力するログファイルの確認が必要だと思います。
MySQLサーバには要求されたSQLをログファイルに出力する機能があるはずなので、その機能を有効にすればどのようなSQL文がMySQLへ届いているのかが分かります。それを確認することで問題箇所を絞り込めるのではないでしょうか。
この回答への補足
この質問についてですが
お知恵を貸していただいてすみません^^;
あれから、いろいろ試していったのですが、
「eclipseを終了させた後、eclipse機能の“リフレッシュ(ショートカットキーF5)”を使用したところ、後に問題なく動作するようになりました。」
MySQLのログの確認方法については
まだわかっていませんので、また調べてみたいと思います。
どうも、ありがとうございました。
ありがとうございます。
>MySQLサーバが出力するログファイルの確認が必要だと思います。
そのようなものがあるのですね(驚)
問題箇所の絞込んで、
また確認していこうと思います。
どうもありがとうございます。
なんだか解決に繋がりそうな気がしてきました。
No.1
- 回答日時:
私のところもほぼ同じ環境で確認しましたが、VARCHAR型の値をwhere句に使用しても問題なく抽出できました。
where句に2バイト文字(全角など)を使用していれば文字コードも関係してくる可能性もありますが、そういう問題でもなさそうですね。
試しにPreparedStatementでSQLを発行してみてはいかがでしょう?
結果は同じかもしれませんが…。
後は考えられることはJDBCのバージョンでしょうか…。
この回答への補足
この質問についてですが
お知恵を貸していただいてすみません^^;
あれから、いろいろ試していったのですが、
「eclipseを終了させた後、eclipse機能の“リフレッシュ(ショートカットキーF5)”を使用したところ、後に問題なく動作するようになりました。」
「eclipse内容とワークスペース内容の同期が取れてなかった」だけなのかもしれませんが・・・
んー なんだったんですかね(--;
現状は問題なく動作している状況です。(苦笑)
どうも、ありがとうございました。
ありがとうございます。
私の方も別の環境で試してみたところ、
問題なく動いたのですが、あるプロジェクトに限ってそのような状態です。
ちょっと色々とためしてみます(汗)
どうもです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaのCSVデータ読込についてです
-
Firefoxでvalueの値を変更できない
-
ダブルクォーテーションを含む...
-
DOSバッチで変数の値を変数名に...
-
BCD形式で時刻を!
-
C言語の変数(LSB)の合わせ込...
-
cookieのdomain指定
-
数値?文字?数値?
-
hiddenの値を消したくない!
-
getParameterの値変更
-
個別に表示場所を変えたい
-
VB6,論理演算子Orの使い方がわ...
-
偶数ビットだけと奇数ビットだ...
-
JSPでの計算結果表示
-
wsprintf関数の使い方について
-
jQueryローディングアニメーシ...
-
n進数から10進数に変換するには
-
Stringクラスの変数の格納アド...
-
Java配列でNullPointerExceptio...
-
Path型をString型へ変換する(Java)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
ArrayListの要素数の上限
-
BCD形式で時刻を!
-
DateTimePickerに値を入れたい...
-
excel vba 時間計算と条件分岐...
-
日付や時刻の"01"を" 1"に変換...
-
Stringクラスの変数の格納アド...
-
C言語の変数(LSB)の合わせ込...
-
Evaluate()に文字列の形式の数...
-
char型での演算子
-
実行シェルからCOBOLへパラメー...
-
DOSバッチで変数の値を変数名に...
-
レジストリの値の取得のデータ...
-
hiddenの値を消したくない!
-
結合した文字列をファイル名に...
-
ResultSetの内部構造(Java)
-
String型の値が大文字か小文字...
-
javaの演算子の部分ですが 4行...
おすすめ情報