2016-11-04 2 views
1

私はMySQLで小文字の表を用意しています。これは私が使用したクエリであり、MySQLとJavaの両方でうまくいきます。私の上位機能はMySQL Workbenchで動作しますが、Java/JDBCでは動作しないのはなぜですか?

select word from words order by rand() limit 1 

しかし、私も大文字の文字列として単語を取得したいと思います。私はこの試みた:

select upper(word) from words order by rand() limit 1 

をそして、それは、MySQL Workbenchで完璧に動作しますが、私はJavaでresultSet.getString("word")を使用する場合には、例外をスロー:

SQL Exception: Column 'word' not found.

このエラーが発生する理由と、私はそれをどのように修正することができます?私はJavaで大文字に変換することができますが、なぜこれが起こっているのか知りたいのです。

+0

'RAND()LIMIT BY単語ORDER FROM UPPER(単語)を選択し1'これを試すことができますか? – Jordon

+1

@ ShivaShinde - これはうまくいきません。また、それは私がすでに持っているものではありませんか?大文字は問題ではありません。 – Pikamander2

答えて

1

ああ、私はそれを理解しました。

結果セットでは、カラム名はwordではなくupper(word)になりました。

だから私はどちらかに私のクエリを変更する必要があります。

select upper(word) as `word` from words order by rand() limit 1 

かに私のJavaコードを変更します。

resultSet.getString("upper(word)") 
+3

または、列インデックス、つまり 'resultSet.getString(1)'を使用します。 –

関連する問題