0
我正在开发一个基本上在GUI中的JTable中显示mySQL数据库结果的双层java应用程序。 mySQL查询由用户在textArea中键入,然后按下“execute command”按钮,并且与该命令相对应的mySQL结果只出现在JTable中。当mySQL命令为大写时,executeQuery仅适用于查询?
我遇到的问题是当我尝试键入一个查询,如“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();
}
我会记录并查看firstWord是什么。我想这可能是空间问题。 – kosa
firstWord,不是问题...它只是获取查询的第一个单词,并且我测试它可以正常工作......只要“SELECT”或“INSERT”是大写。 – AnchovyLegend
你确定if(firstWord.toUpperCase()。equals(“SELECT”))语句是你的问题的地方吗?尝试字符串firstWord = query.substring(0,6).toUpperCase();这将避免您不得不多次重复相同的声明(可维护性更强,效率更高)。输出这个结果(到一个调试文件/控制台/等),看看这个字符串是什么样子 - 即确定你有SELECT,没有别的。你还可以向我们展示用于构成statement/statement2的代码;这可能是该计划正在通过IF声明和该问题的其他地方。 – JohnLBevan