对我的数据库中的“Users”表的引用会引发NullPointerException。我该如何解决?

时间:2016-11-25 06:43:38

标签: javafx sqlite-net

我正在尝试创建一个需要用户登录的应用程序。我已经使用SceneBuilder和FXML文件作为界面。我现在必须从SQLite数据库中检索数据(我将数据命名为“Users”)。当我运行这个程序时,它抛出一个NullPointerException(我已经存储在表上的数据)。我该如何解决?

// P.S。我使用IntelliJ从IDE本身编辑数据库。

enter image description here

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
import javafx.stage.Stage;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Controller {

    @FXML TextField username;
    @FXML TextField password;
    @FXML Label warning;
    Connection c;
    PreparedStatement pst;
    ResultSet rs;

    public void loginButtonClicked() throws IOException {
        try {
            String query = "select * from Users where Username=? and Password=?";
            pst = c.prepareStatement(query);
            pst.setString(1, username.getText());
            pst.setString(2, password.getText());
            rs = pst.executeQuery();

            if (rs.next()) {
                warning.setText("Successful");
            } else {
                warning.setText("Not Successful");
            }

        } catch (Exception e) {
            System.err.println(e);
        }
    }


    public void cancelButtonClicked(ActionEvent event) throws IOException {
        System.out.println("User has cancelled login...");

        ((Node)event.getSource()).getScene().getWindow().hide();
    }
}

1 个答案:

答案 0 :(得分:0)

您应该关闭连接 在try语句中添加else 太平洋标准时间。关(); RS。关闭();