将数据保存到 mysql 工作台时出现错误

i have a error when save data in to mysql work bench

这是我的 MYSQL 数据库:enter image description here

enter image description here

这是代码 enter image description here

enter image description here

和错误信息: 运行: thg 12 03, 2020 9:45:51 CH program.StudentModify 插入 严重:无 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'Number) values('sdsdsd','Male',23,'sdsdsd','232323') 附近使用的正确语法' 在第 1 行 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:403) 在 com.mysql.jdbc.Util.getInstance(Util.java:386) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1915) 在 com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1254) 在 program.StudentModify.插入(StudentModify.java:79) 在 program.StudentJFrame.btSaveActionPerformed(StudentJFrame.java:260) 在 program.StudentJFrame$3.actionPerformed(StudentJFrame.java:111) 在 java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) 在 java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) 在 java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) 在 java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) 在 java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) 在 java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) 在 java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) 在 java.desktop/java.awt.Component.processEvent(Component.java:6401) 在 java.desktop/java.awt.Container.processEvent(Container.java:2263) 在 java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) 在 java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) 在 java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) 在 java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) 在 java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) 在 java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) 在 java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) 在 java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2764) 在 java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) 在 java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:391) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) 在 java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) 在 java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:391) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) 在 java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

也许你应该像 PhoneNumber 这样用一个词写 'Phone Number'。

或者写 Phone Number 在插入语句中的单词周围使用反引号 - 在创建语句中,您在字段名称周围使用了反引号。

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 'Number) 
values('sdsdsd','Male',23,'sdsdsd','232323')' 

'数字大概是'Phone Number'的第二部分.

您的 SQL 查询中有 Phone 个号码。

在您的代码中,每次使用该方法时您都会打开和关闭连接 您可以移动连接和关闭单独的方法

例如:

    public Connection connect() throws SQLException {
        Connection connection = null;
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        connection = DriverManager.getConnection(URL,USER,PASSWORD);

        return connection;
    }

  public void disconnect(Connection connection) throws SQLException {
        connection.close();
    }

也许你可以尝试代替:

String url = "jdbc:mysql://localhost:3306/studentmanagement?&useSSL=false"

尝试:

String url = "jdbc:mysql://localhost:3306/studentmanagement?autoReconnet=true&useSSL=false"