【发布时间】: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更改为approved和dislike更改为disapproved