MySql Java错误:请检查使用near';的正确语法';调用PreparedStatement时在第1行

MySql Java错误:请检查使用near';的正确语法';调用PreparedStatement时在第1行,java,mysql,jdbc,Java,Mysql,Jdbc,我试着打电话给我的数据库,但它总是变得奇怪,我不知道为什么。 一次正常工作,下一次我除了重新启动服务器外什么都不做更改时,会出现以下错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“?”附近使用的正确语法 我已经查看了我在PreparedStatement中提供的id是否不为空,也不为空。(由于它是非空值,因此不能为或) 在结果集上调用错误(当执行结果集时) 下面是我在mysql语句中尝试的不同内容: SELECT * FROM registration wher

我试着打电话给我的数据库,但它总是变得奇怪,我不知道为什么。 一次正常工作,下一次我除了重新启动服务器外什么都不做更改时,会出现以下错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“?”附近使用的正确语法

我已经查看了我在PreparedStatement中提供的id是否不为空,也不为空。(由于它是非空值,因此不能为或) 在结果集上调用错误(当执行结果集时) 下面是我在mysql语句中尝试的不同内容:

SELECT * FROM registration where `registration_id` > ?
SELECT * FROM registration where registration_id > ?
//what used to work:
SELECT * FROM registration where id > ?
这是我执行查询的方式:

SQLConnection sqlConnection = new SQLConnection();
            Connection conn = sqlConnection.getConnection();
            String query = "SELECT * FROM registration where `registration_id` > ?";
            try {
                PreparedStatement stmn = conn.prepareStatement(query);
                System.out.println(user.getLastExport());
                stmn.setInt(1, user.getLastExport());
                // execute the query, and get a java resultset
                ResultSet rs = stmn.executeQuery(query);
错误:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1218)
    at houseoftyping.sql.SQLConnection.fillWorkbookWithLastRegistrations(SQLConnection.java:158)
    at houseoftyping.controller.ExcelController.handleDownload(ExcelController.java:106)
    at houseoftyping.controller.ExcelController.doGet(ExcelController.java:51)
    at houseoftyping.controller.ExcelController.doPost(ExcelController.java:197)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

我知道我做错了什么:

在准备好的声明中,我这样做:

PreparedStatement stmn = conn.prepareStatement(query);
这意味着我的查询被加载到准备好的语句中 现在我做错了,我再次将我的查询添加到结果集中,如下所示:

ResultSet rs = stmn.executeQuery(query);
但它必须没有这样的查询:

ResultSet rs = stmn.executeQuery();