首页 文章

尝试使用java数据库更新时的MySQLSyntaxErrorException [关闭]

提问于
浏览
0

我在更新数据库时不断收到 MySQLSyntaxErrorException .

这是错误的堆栈跟踪:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与MySQL服务器版本相对应的手册,以便在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)的第1行的'?,?,?,?,?,?,?)'附近使用正确的语法 . 位于com.mysql的java.lang.reflect.Constructor.newInstance(Constructor.java:423)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)中的.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) . com.mysql.jdbc.Util.getInstance(Util.java:386)中的com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)中的com.mysql中的jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)中的com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)中的.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) . mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)位于com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)的com.mysql.jdbc.ConnectionImpl.execSQL(连接) Impl.java:2738)at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:899)at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:737)at Lab6.StudentDB.writeToSQL(StudentDB.java) :166)在Lab6.LabWeek6GUI.addJButtonActionPerformed(LabWeek6GUI.java:204)的Lab6.StudentDB.add(StudentDB.java:83),Lab6.LabWeek6GUI.access $ 000(LabWeek6GUI.java:16),Lab6.LabWeek6GUI $ 2.actionPerformed (LabWeek6GUI.java:68)javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)at javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2348)at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel . java:402)at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)at java.awt.Component.processMouseEvent(Component.java) :6533)在java.awt.Component.processEvent(Component.java:6298)的javax.swing.JComponent.processMouseEvent(JComponent.java:3324) t java.awt.ContainerEventImpl(Component.java:4889)的java.awt.Container.ventEvent(Container.java:2236)java.awt上的java.awt.Container.dispatchEventImpl(Container.java:2294) . 位于java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)的java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)上的Component.dispatchEvent(Component.java:4711)位于java.awt.LightweightDispatcher.dispatchEvent(Container .java:4466)at java.awt.Container.dispatchEventImpl(Container.java:2280)at java.awt.Window.dispatchEventImpl(Window.java:2746)at java.awt.Component.dispatchEvent(Component.java:4711)在Java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)java.awt.EventQueue.access $ 500(EventQueue.java:97)java.awt.EventQueue $ 3.run(EventQueue.java:709)java . awt.EventQueue $ 3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.j ava:80)java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)at java.awt.EventQueue $ 4.run(EventQueue.java:731)at java.awt.EventQueue $ 4.run(EventQueue.java) :729)java上的java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)中的java.security.AccessController.doPrivileged(Native Method),位于java的java.awt.EventQueue.dispatchEvent(EventQueue.java:728) . 位于java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)的awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)位于java.awt.EventDispatchThread.pumpEvents的java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) (EventDispatchThread.java:101)位于java.awt.EventDispatchThread.run的java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)(EventDispatchThread.java:82)

这是我的代码 .

String sql = "INSERT INTO studentDB (id, name, grade, avg, test1, test2, test3) "
                    + "VALUES (?, ?, ?, ?, ?, ?, ?)";

stmt.execute(sql);

PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.setString(2, name);
preparedStatement.setString(3, grade);
preparedStatement.setDouble(4, avg);
preparedStatement.setDouble(5, test1);
preparedStatement.setDouble(6, test2);
preparedStatement.setDouble(7, test3);
preparedStatement.executeUpdate();

1 回答

  • 1

    您的异常来自 stmt.execute(sql); ,删除它 . 您似乎正在使用 PreparedStatement 之后(但由于之前提到的 stmt.execute(sql) 尝试在未设置绑定参数的情况下运行查询,因此未访问您的代码) .

相关问题