Java 删除mysql中的记录时出现com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

Java 删除mysql中的记录时出现com.mysql.jdbc.exceptions.MySQLSyntaxErrorException,java,mysql,jdbc,Java,Mysql,Jdbc,以下代码引发语法错误异常 我在后端使用Ajax调用对表执行CRUD操作 public class CrudDao { private Connection connection; private String table; public CrudDao(Connection con, String table) { this.connection = con; this.table = table; } public

以下代码引发语法错误异常 我在后端使用Ajax调用对表执行CRUD操作

public class CrudDao {
    private Connection connection;
    private String table;

    public CrudDao(Connection con, String table) {
        this.connection = con;
        this.table = table;

    }

    public void deleteUser(int RECORDID) {
        try {

            PreparedStatement preparedStatement = connection
                    .prepareStatement("delete from " + table
                            + "where USERID=?");
             preparedStatement.setInt(1, RECORDID);
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e);
        }
    }


}
在上面的代码中,我只编写了delete方法,它抛出com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

异常的跟踪是

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 'USERID=102' at line 1
{"Result":"OK"}
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303)
    at com.symp.CrudDao.deleteUser(CrudDao.java:33)
    at com.symp.CRUDController.service(CRUDController.java:82)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
试着改变

        PreparedStatement preparedStatement = connection
                .prepareStatement("delete from " + table
                        + "where USERID=?");

您的表名和关键字
where
一起运行,中间没有空格

试试换衣服

        PreparedStatement preparedStatement = connection
                .prepareStatement("delete from " + table
                        + "where USERID=?");

您的表名和关键字
where
一起运行,中间没有空格

试试换衣服

        PreparedStatement preparedStatement = connection
                .prepareStatement("delete from " + table
                        + "where USERID=?");

您的表名和关键字
where
一起运行,中间没有空格

试试换衣服

        PreparedStatement preparedStatement = connection
                .prepareStatement("delete from " + table
                        + "where USERID=?");


您的表名和关键字
where
一起运行,中间没有空格

表名
where
子句之间需要有
空格

"delete from " + table + " where USERID=?"
当前,您的
sql
脚本如下所示


delete from tablename where USERID=102

表名
where
子句之间需要有
空格

"delete from " + table + " where USERID=?"
当前,您的
sql
脚本如下所示


delete from tablename where USERID=102

表名
where
子句之间需要有
空格

"delete from " + table + " where USERID=?"
当前,您的
sql
脚本如下所示


delete from tablename where USERID=102

表名
where
子句之间需要有
空格

"delete from " + table + " where USERID=?"
当前,您的
sql
脚本如下所示



delete from tablename where USERID=102

您确定这与给出异常的代码相同吗?因为在查询中您使用的是'recordid=2',但您得到的是'USERID=102'的异常,看起来ErrorException不是来自此代码。我编辑了代码@adPost complete code和异常跟踪。这将是有帮助的,但仍然不确信错误来自发布的代码检查您的表名,当您创建PS时。您确定这与给出异常的代码相同吗?因为在查询中您使用的是'recordid=2',但您得到的是'USERID=102'的异常,看起来ErrorException不是来自此代码。我编辑了代码@adPost complete code和异常跟踪。这将是有帮助的,但仍然不确信错误来自发布的代码检查您的表名,当您创建PS时。您确定这与给出异常的代码相同吗?因为在查询中您使用的是'recordid=2',但您得到的是'USERID=102'的异常,看起来ErrorException不是来自此代码。我编辑了代码@adPost complete code和异常跟踪。这将是有帮助的,但仍然不确信错误来自发布的代码检查您的表名,当您创建PS时。您确定这与给出异常的代码相同吗?因为在查询中您使用的是'recordid=2',但您得到的是'USERID=102'的异常,看起来ErrorException不是来自此代码。我编辑了代码@adPost complete code和异常跟踪。这会很有帮助,但仍然不确信错误来自于检查表名,创建PS时,此操作正常,不会引发任何异常,但不会在数据库中删除记录。此操作正常,不会引发任何异常,但不会在数据库中删除记录。此操作正常,不会引发任何异常,但不会在数据库中删除记录。此操作正常,不会正在引发任何异常,但数据库中的记录未被删除。