0

我正在开发一个两层 java 应用程序,它基本上在 GUI 中的 JTable 中显示 mySQL 数据库结果。用户在 textArea 中键入 mySQL 查询,然后按下“执行命令”按钮,对应于该命令的 mySQL 结果简单地出现在 JTable 中。

我遇到的问题是当我尝试输入诸如“SELECT * FROM bikes WHERE COST=10000;”之类的查询时 一切都按预期工作并返回结果。但是,如果我输入“select * from bikes 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
  • 尝试使用equalsIgnoreCase而不是 straight equals
  • 如果您不知道代码是否进入了一个if块,请尝试在该块中添加一些日志记录。
  • 假设它正在进入块,则查询可能会导致问题。
于 2012-10-17T17:57:35.457 回答