ユーザーログインが必要なアプリケーションを作成しようとしています。私はインターフェイスのためにSceneBuilderとFXMLファイルを使用しました。私は今SQLiteデータベースからデータを取得しなければなりません(データを「Users」と名付けました)。このプログラムを実行すると、NullPointerExceptionがスローされます(すでにデータがテーブルに保存されています)。どうすれば修正できますか?データベース内の "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();
}
}
データベース接続を取得することはありません(https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html)( 'c'はnullです)。また、参照してください:["ボビーテーブル" XKCDコミックのSQLインジェクションはどのように機能しますか?](http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables -xkcd-comic-work)と[JavaFXデスクトップアプリケーションでのSQLインジェクションやその他のセキュリティエラーの回避方法](http://stackoverflow.com/questions/28109969/how-to-avoid-sql-injection-and-other- security-failure-in-javafx-desktop-applicat) – jewelsea
ちょっと!フィードバックに感謝します。メインクラスには接続をチェックするメソッドがあります。私はFXML(javafxだけを使用)を使わずにコードを試してみました。それ以外の問題はありますか?私はあなたがIDEでそれを実行し、問題を解決できるかどうか、それをたくさんいただきたいと思います。私は会う期限があり、何が間違っているのか分かりません。 – Karthik