基本的にmySQLデータベースの結果をGUIのJTableに表示する2層のJavaアプリケーションを開発しています。ユーザーがmySQLクエリをtextAreaに入力し、[コマンドの実行]ボタンを押すと、そのコマンドに対応するmySQLの結果がJTableに表示されます。
私が遭遇している問題は、「SELECT * FROMbikes WHERE COST=10000;」などのクエリを入力しようとしたときです。すべてが期待どおりに機能し、結果が返されます。ただし、「select * frombikes where cost = 10000;」と入力すると、結果は返されず、基本的に何も起こらず、エラーも発生しません。クエリで「toUpperCase()」を実行しようとしましたが、問題は解決しませんでした。
何がこの問題を引き起こしているのだろうかと思っていましたか?mySQLでは大文字と小文字が区別されないため、SELECTが小文字でも機能するはずです...以下のコードは、問題の原因となっている可能性のある領域のスニペットです。
public void setQuery(String query) throws SQLException, IllegalStateException{
if(!connectedToDatabase)
throw new IllegalStateException("Not Connected to Database");
String firstWord = query.substring(0, 6);
if(firstWord.toUpperCase().equals("SELECT")){
resultSet = statement.executeQuery(query);
}
else if(firstWord.toUpperCase().equals("INSERT") || firstWord.toUpperCase().equals("DELETE") || firstWord.toUpperCase().equals("UPDATE")){
statement2.executeUpdate(query);
}
metaData = resultSet.getMetaData();
resultSet.last();
numberOfRows = resultSet.getRow();
fireTableStructureChanged();
}