有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带MySQL的java注册表单JavaFX在intellij中失败

我制作了一个javaFx注册表单,当我编译代码连接时,它与MySQL相连,但当我尝试创建一个新用户时,我得到了一个错误,不允许我将详细信息导入表中。我得到的错误是,没有为参数1指定值,即使我已经在MySQL中创建了Id列下面我写了我的代码并分享了我的表是什么样子的,最后是我得到的错误,所以有人能帮我解决这个问题吗

        ea = new Stage();
        AnchorPane pane = new AnchorPane();


        TextField n = new TextField();
        n.setPromptText("ENTER YOUR FIRST NAME");
        n.setLayoutY(150);
        n.setLayoutX(140);
        pane.getChildren().add(n);

        TextField s = new TextField();
        s.setPromptText("ENTER YOU LAST NAME");
        s.setLayoutY(200);
        s.setLayoutX(140);
        pane.getChildren().add(s);

        TextField e = new TextField();
        e.setPromptText("ENTER YOUR EMAIL");
        e.setLayoutY(250);
        e.setLayoutX(140);
        pane.getChildren().add(e);

        TextField u = new TextField();
        u.setPromptText("ENTER YOUR USERNAME");
        u.setLayoutY(300);
        u.setLayoutX(140);
        pane.getChildren().add(u);

        TextField a = new TextField();
        a.setPromptText("ENTER YOU PASSWORD");
        a.setLayoutY(350);
        a.setLayoutX(140);
        pane.getChildren().add(a);


        Button b = new Button();
        b.setText("save");
        b.setLayoutY(400);
        b.setLayoutX(180);
        b.setOnAction((ee)->{
            
            // name = ErrorDetection.name(n.getText());
            // age  = ErrorDetection.inNumber(a.getText());
                try
                {
                    String fn = n.getText();
                    String ln = s.getText();
                    String em = e.getText();
                    String un = u.getText();
                    String ps = s.getText();
                    PreparedStatement stmt = con.prepareStatement("INSERT INTO userdatabasetable VALUES (?,?,?,?,?,?)");
                    stmt.setString(2, fn);
                    stmt.setString(3, ln);
                    stmt.setString(4, em);
                    stmt.setString(5, un);
                    stmt.setString(6, ps);
                    stmt.execute();
                    System.out.println("Insertion Complete");
                    stmt.close();
                }
                catch (SQLException er)
                {
                    er.printStackTrace();
                }
            
        });
        pane.getChildren().add(b);

        scene = new Scene(pane,1280,720);
        //e.setOnCloseRequest(confirmCloseEventHandler);
        ea.setScene(scene);
        ea.setResizable(false);
        //e.getIcons().add(new Image("commonPictures/cra.png"));
        ea.setTitle("CAR RENTING SYSTEM");
        ea.show();

这就是SQL表的外观

 ----------------------------------------------------------------------------------------------------------------------------------------
|     ID     |     FirstName     |     LastName     |                 Email                  |      UserName    |     PassWord     |
 -------------------------------------------------------------------------------------------------------------------------------------
|     1       |         ahmed    |        ali       |            ahmed@gmail.com             |        ahmed99   |          1234       |
--------------------------------------------------------------------------------------------------------

这就是我得到的错误

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" --module-path "C:\Program Files\Java\javafx-sdk-14.0.1\lib" --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED -javaagent:C:\Users\YUSOF\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-1\202.6250.13\lib\idea_rt.jar=49308:C:\Users\YUSOF\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-1\202.6250.13\bin -Dfile.encoding=UTF-8 -classpath "P:\JAVA PROJECTS\CP III\JavaFX DataBase (JavaFX 8 Tutorial)\out\production\JavaFX DataBase (JavaFX 8 Tutorial);C:\Program Files\Java\javafx-sdk-14.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-14.0.1\lib\javafx.graphics.jar;P:\JAVA PROJECTS\CP III\mysql-connector-java-8.0.20.jar" sample.DataBaseProject1
DataBase Connected Successfully
java.sql.SQLException: No value specified for parameter 1
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:396)
    at sample.GUIS.lambda$display$0(GUIS.java:83)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8885)
    at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
    at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
    at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3890)
    at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1885)
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2618)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:832)


共 (1) 个答案

  1. # 1 楼答案

    以下任何一项都应该有效:

    PreparedStatement stmt = con.prepareStatement(
        "INSERT INTO userdatabasetable "+
        "(FirstName, LastName, Email, UserName, PassWord) "+
        "VALUES (?,?,?,?,?)");
    stmt.setString(1, fn);
    stmt.setString(2, ln);
    stmt.setString(3, em);
    stmt.setString(4, un);
    stmt.setString(5, ps);
    

    或者

    PreparedStatement stmt = con.prepareStatement(
        "INSERT INTO userdatabasetable VALUES (?,?,?,?,?,?)");
    stmt.setNull(1, Types.INTEGER);
    stmt.setString(2, fn);
    stmt.setString(3, ln);
    stmt.setString(4, em);
    stmt.setString(5, un);
    stmt.setString(6, ps);
    

    或者

    PreparedStatement stmt = con.prepareStatement(
        "INSERT INTO userdatabasetable VALUES (NULL,?,?,?,?,?)");
    stmt.setString(1, fn);
    stmt.setString(2, ln);
    stmt.setString(3, em);
    stmt.setString(4, un);
    stmt.setString(5, ps);