我正在尝试创建一个需要用户登录的应用程序。我已经使用SceneBuilder和FXML文件作为界面。我现在必须从SQLite数据库中检索数据(我将数据命名为“Users”)。当我运行这个程序时,它抛出一个NullPointerException(我已经存储在表上的数据)。我该如何解决?
// P.S。我使用IntelliJ从IDE本身编辑数据库。
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();
}
}
答案 0 :(得分:0)
您应该关闭连接 在try语句中添加else 太平洋标准时间。关(); RS。关闭();