Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当mySQL命令为大写时,executeQuery仅用于查询?_Java_Mysql - Fatal编程技术网

Java 当mySQL命令为大写时,executeQuery仅用于查询?

Java 当mySQL命令为大写时,executeQuery仅用于查询?,java,mysql,Java,Mysql,我正在开发一个两层java应用程序,它基本上在GUI中的JTable中显示mySQL数据库结果。用户在文本区域中键入mySQL查询,然后按下“执行命令”按钮,与该命令对应的mySQL结果将简单地显示在JTable中 我遇到的问题是,当我尝试键入诸如“SELECT*FROM bikes WHERE COST=10000”之类的查询时,所有操作都按预期进行,并返回结果。但是,如果我输入“select*from bikes where cost=10000;”,则不会返回任何结果,基本上不会发生任何事

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

我遇到的问题是,当我尝试键入诸如“SELECT*FROM bikes WHERE COST=10000”之类的查询时,所有操作都按预期进行,并返回结果。但是,如果我输入“select*from bikes where cost=10000;”,则不会返回任何结果,基本上不会发生任何事情,甚至不会出现错误。我尝试对查询运行“toUpperCase()”,但没有解决问题

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();
    }
我想知道是什么导致了这个问题?我知道mySQL不区分大小写,所以即使我选择的是小写,它也应该可以工作。。。 下面的代码是可能导致问题的区域的一个片段

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();
    }
  • 尝试使用而不是直接的
    equals
  • 如果不知道代码是否进入
    If
    块,请尝试在该块中添加一些日志记录
  • 假设它正在进入块中,则查询很可能是导致问题的原因

我会记录,看看第一个字是什么。我想这可能是空间的问题,而不是大小写的问题。。。它只得到查询的第一个单词,我测试它是否正常工作。。。只要“SELECT”或“INSERT”是大写,您确定if(firstWord.toUpperCase().equals(“SELECT”)语句就是您的问题所在吗?尝试字符串firstWord=query.substring(0,6.toUpperCase();这将避免您以后多次重复同一语句(更易于维护,也更高效)。输出此结果(到调试文件/控制台/etc)以查看字符串的外观-即,确保您已选择而没有其他内容。你能给我们看一下用来组成陈述的代码吗;这可能是因为程序正在通过IF语句,而问题在别处。然后,您是否可以检查对应块的控制,无论是IF(或)else,以确保块是否也正在执行。