2012-04-25 10 views
0

私のAndroidアプリケーションからMS SQL Server 2008に格納されているデータベースにログインシステムを実装しようとしています。ユーザーが接続ヘルパークラスに接続してパスワードマッチングを比較するlogInメソッドを呼び出します。メソッド呼び出しでクラッシュする "アクティビティのメソッドを実行できませんでした"

これはボタンでログがクリックされたときに実行される関数で次のようにConnectorクラスの

public void onLogInButtonClicked(View v){ 
     final EditText login = (EditText) findViewById(R.id.login); 
     final EditText password = (EditText) findViewById(R.id.password); 

     String userName = login.getText().toString(); 
     String pass = password.getText().toString(); 
     System.out.println("Pass Entered:" + pass); 
     System.out.println("User Entered" + userName); 


     if (connector.logIn(userName, pass)){ 

      //Creates Intent from new Activity to be launched 
      Intent k = new Intent(this, MainActivity.class); 

      //Sends login name to activity k 
      k.putExtra("loginName", userName); 
      //Starts new Activity 
      startActivity(k); 


     } 
     else 
     { 
      //toast log in unsuccessful 
     } 
    } 

ログイン方法は次のとおりです。

boolean logIn(String name, String password){ 
     System.out.println("I'm in LogIn method"); 
     java.sql.ResultSet result = null; 
     boolean log = false; 
     try { 
      connection = this.getConnection(); 
      if (connection != null) { 

        //String for the login query 
        String statement = "SELECT Password FROM Users WHERE UserName = '" 
            + name + "'";  
        System.out.println(statement); 

        Statement select = connection.createStatement(); 
        result = select.executeQuery(statement); 
        System.out.println(result.getString(1)); 
        if(result.getString(1) == password) log = true; 

        result.close(); 
        result = null; 
        closeConnection(); 
      } 
      else { 
        System.out.println("Error: No active Connection"); 
        return log; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      } 
     return log; 
    } 

私も見ることはありませんコンソールの「loginメソッドにあります」と表示されますが、クラッシュはメソッドが呼び出された行で発生しますが、アプリケーションがクラッシュする前にクラッシュすると推測されます。ここで

は、ログは次のとおりです。事前に

04-25 23:32:45.855: E/AndroidRuntime(795): FATAL EXCEPTION: main 
04-25 23:32:45.855: E/AndroidRuntime(795): java.lang.IllegalStateException: Could not execute method of the activity 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$1.onClick(View.java:2144) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View.performClick(View.java:2485) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$PerformClick.run(View.java:9080) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Handler.handleCallback(Handler.java:587) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.os.Looper.loop(Looper.java:123) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invoke(Method.java:507) 
04-25 23:32:45.855: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-25 23:32:45.855: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-25 23:32:45.855: E/AndroidRuntime(795): at dalvik.system.NativeStart.main(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): Caused by: java.lang.reflect.InvocationTargetException 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 23:32:45.855: E/AndroidRuntime(795): at java.lang.reflect.Method.invoke(Method.java:507) 
04-25 23:32:45.855: E/AndroidRuntime(795): at android.view.View$1.onClick(View.java:2139) 
04-25 23:32:45.855: E/AndroidRuntime(795): ... 11 more 
04-25 23:32:45.855: E/AndroidRuntime(795): Caused by: java.lang.NullPointerException 

ありがとう!

+0

残りのスタックトレースをログに投稿できますか?最後の行はNullPointerExceptionを示します。これはおそらく根本原因です。 – elevine

+0

これ以降は、次のように表示されます。04-25 23:32:45.855:E/AndroidRuntime(795):com.gmat.app.AppActivity.onLogInButtonClicked(AppActivity.java:35)行35は、connector.logIn ()メソッドは –

答えて

0

あなたのコネクタオブジェクトのようなサウンドはnullです。それを初期化したり、間違って範囲を忘れましたか?あなたがそれを見つけるのに十分ではなかった場合、コネクタが初期化された場所を投稿してください。

+0

と呼ばれています。投稿されたメソッドの上で、単にコネクタコネクタで初期化しました。 –

+0

@Gmat「コネクタコネクタ」は宣言です。 'connector = new Connector();'は初期化です。あるいは、同じ行で両方を行うことができます: 'Connector connector = new Connector();' – JRaymond

+0

ありがとうございました。私は今、とても愚かな気がする、休息が必要なように見える、もう一度ありがとう。 –

関連する問題