2016-11-25 6 views
0

ユーザーログインが必要なアプリケーションを作成しようとしています。私はインターフェイスのためにSceneBuilderとFXMLファイルを使用しました。私は今SQLiteデータベースからデータを取得しなければなりません(データを「Users」と名付けました)。このプログラムを実行すると、NullPointerExceptionがスローされます(すでにデータがテーブルに保存されています)。どうすれば修正できますか?データベース内の "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(); 
    } 
} 
+0

データベース接続を取得することはありません(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

+0

ちょっと!フィードバックに感謝します。メインクラスには接続をチェックするメソッドがあります。私はFXML(javafxだけを使用)を使わずにコードを試してみました。それ以外の問題はありますか?私はあなたがIDEでそれを実行し、問題を解決できるかどうか、それをたくさんいただきたいと思います。私は会う期限があり、何が間違っているのか分かりません。 – Karthik

答えて

0

あなたは他の PST後に追加try文では、あなたの接続 を閉じる必要があります。閉じる(); rs。閉じる();

+0

答えを(a)コード(スニペット)で明確にしてください。 – Odrai

関連する問題