0

基本的に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();
    }
4

1 に答える 1

1
  • Straightの代わりにequalsIgnoreCaseを使用してみてくださいequals
  • コードがブロックに入っているかどうかわからない場合は、ifそのブロックにロギングを追加してみてください。
  • それがブロックに入っていると仮定すると、クエリが問題を引き起こしている可能性があります。
于 2012-10-17T17:57:35.457 に答える