【问题标题】:SQL Syntax error for update query更新查询的 SQL 语法错误
【发布时间】:2014-09-29 15:55:58
【问题描述】:

我遇到了这个错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'like = '1' 附近使用正确的语法, dislike='0',mealID='17' WHERE mealID ='17'' 在第 1 行 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 连接关闭于 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:408) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 在 com.mysql.jdbc.Util.getInstance(Util.java:386) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809) 在 com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811) 在 com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725) 在 OOADPJdb.database.DBController.updateRequest(DBController.java:73) 在 projPackage.Menu.updateLike(Menu.java:409) 在 projPackage.RetrieveMenuUI.likeBtnActionPerformed(RetrieveMenuUI.java:433) 在 projPackage.RetrieveMenuUI.access$500(RetrieveMenuUI.java:21) 在 projPackage.RetrieveMenuUI$6.actionPerformed(RetrieveMenuUI.java:276) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Component.processMouseEvent(Component.java:6527) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 在 java.awt.Component.processEvent(Component.java:6292) 在 java.awt.Container.processEvent(Container.java:2234) 在 java.awt.Component.dispatchEventImpl(Component.java:4883) 在 java.awt.Container.dispatchEventImpl(Container.java:2292) 在 java.awt.Component.dispatchEvent(Component.java:4705) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 在 java.awt.Container.dispatchEventImpl(Container.java:2278) 在 java.awt.Window.dispatchEventImpl(Window.java:2739) 在 java.awt.Component.dispatchEvent(Component.java:4705) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) 在 java.awt.EventQueue.access$400(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:697) 在 java.awt.EventQueue$3.run(EventQueue.java:691) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:719) 在 java.awt.EventQueue$4.run(EventQueue.java:717) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:716) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

这是我的 SQL 语句

dbQuery = "UPDATE menu SET like = '" + this.like + "', dislike='" + this.dislike + "', mealID= '" + this.mealID + "'";

dbQuery = dbQuery + " WHERE mealID ='" + this.mealID + "'";

很确定这是对的,但它不起作用。

【问题讨论】:

  • 准备好的语句确实存在。请使用它们(当然有参数)。
  • like 是保留字。如果要以它命名列标识符,则需要将其包装在刻度中。
  • 值是 varchar 吗?还是整数?
  • 你应该编辑你的表格..将like更改为approveddislike更改为disapproved

标签: java mysql sql jdbc


【解决方案1】:

在我看来,问题在于使用保留关键字LIKE 作为列名,这总是一个坏主意。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多