java - 保存 TextField 值时出现 "java.lang.NullPointerException"- JavaFx

标签 java sql nullpointerexception javafx textfield

我试图将 TextField 值保存到数据库中,但收到“java.lang.NullPointerException”。

我希望在调用“addClient()”方法时将客户的名字保存到数据库中。

有人可以帮我让它工作吗?提前谢谢大家。

Controller 类:

import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextField;
import wakiliproject.Forms.AddNew.DB.NewClientDB;

public class NewClientController implements Initializable {

    @FXML
    public TextField firstName;

    // Initializes the controller class.
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }

    @FXML
    public void addClient() throws SQLException {
        new NewClientDB().main();
    }
}

数据库类:

import Database.Plain.Skell.DBConnect;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import wakiliproject.Forms.AddNew.NewClientController;

public class NewClientDB extends NewClientController {

    private String firstNames = new NewClientController().firstName.getText();

    public void main() throws SQLException {
        Connection conn = DBConnect.connect();
        Statement stmt = null;
        try {

            //STEP 3: Open a connection
            System.out.println("Connecting to a selected database...");
            System.out.println("Connected database successfully...");

            //STEP 4: Execute a query
            System.out.println("Inserting records into the table...");
            stmt = conn.createStatement();

            String sql = "INSERT INTO KIWI "
                    + "VALUES (102, " + (firstNames) + ")";
            stmt.executeUpdate(sql);
            System.out.println("Inserted records into the table...");

        } catch (SQLException se) {
            //Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (stmt != null) {
                    conn.close();
                }
            } catch (SQLException se) {
            }// do nothing
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            }//end finally try
        }//end try
        System.out.println("Goodbye!");
    }//end main
}

编辑:

我忘了提及这是在 JavaFx 中,并且从使用 JavaFx SceneBuilder 创建的 FXML 文件调用“TextField firstName”。我尝试在 Controller 中初始化它,但没有成功。有任何想法吗?我认为这些类型的对象不应该被初始化,至少通过 JavaFx 不应该被初始化。

错误:

Caused by: java.lang.NullPointerException
    at wakiliproject.Forms.AddNew.DB.NewClientDB.<init>(NewClientDB.java:12)
    at wakiliproject.Forms.AddNew.NewClientController.addClient(NewClientController.java:41)
    ... 40 more

最佳答案

在这一行中,firstName 为 null

private String firstNames = new NewClientController().firstName.getText();

您必须在构造函数中或在声明变量时初始化该变量

公共(public) TextField FirstName = new TextField();

关于java - 保存 TextField 值时出现 "java.lang.NullPointerException"- JavaFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19164303/

相关文章:

java - 你能告诉我,我的请求映射有什么问题吗?

java - 将打开的资源传递给线程是好习惯吗?

javascript - 哪种是本地化的最佳实践?通过使用数据库以及 war 之外保存的缓存或属性文件

c# - 在 C# 中使用 OLEDB 数据提供程序读取 excel 文件时的 FROM 子句

java - EDT 违规是否可能导致外部软件出现 NullPointerException?

java - 打印用户定义大小的菱形的下半部分

python - 如何连接 3 个表并执行 func.sum

mysql - 在 mysql 中查找多个分组的第二高值

java - 带反射的 NPE

java - 无法确定空指针异常背后的原因