2016-04-11 8 views
1

MySqlデータベースのJDBCライブラリを使用して、アンドロイドのユーザー認証に関して本当に助けが必要です。私のデータベースは完全に機能していますが、私はログインアクティビティで認証を提供する方法がわかりません。アンドロイド:mysqlのユーザーログイン認証JDBC

ここは私のDBHelperクラスです。

public boolean loginUser(String userName, String password) { 
    boolean result = false; 
    ResultSet rSet; 

    try { 
     PreparedStatement st = conn.prepareStatement(("SELECT username, password, member_tbl where user_name=? and password=?")); 
     st.setString(1, userName); 
     st.setString(2, password); 

     rSet = st.executeQuery(); 
     result= rSet.next(); 

     if (result == true) { 
      if (rSet.getInt("username") > 0) { 
       st.close(); 
      } 
     } 

    } catch (SQLException e) { 
     Log.e(TAG, e.getMessage()); 
    } 

    return result; 
} 

ログイン・アクティビティー・クラス。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    btnLogin= (Button) findViewById(R.id.buttonLogin); 
    editextUserName= (EditText) findViewById(R.id.editTextUserName); 
    editextPassword= (EditText) findViewById(R.id.editTextPassword); 

    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (editextUserName.getText().toString().isEmpty() || editextPassword.getText().toString().isEmpty()){ 
       Toast.makeText(getApplicationContext(),"Please fill out needed details.",Toast.LENGTH_LONG).show(); 
      }else { 
       new loginUser().execute(); 
      } 
     } 
    }); 
} 

private class loginUser extends AsyncTask<Void, Void, Void> { 
    ProgressDialog dialog; 
    private boolean result; 

    @Override 
    protected void onPreExecute() { 

     uName= editextUserName.getText().toString(); 
     pWord= editextPassword.getText().toString(); 

     dialog= new ProgressDialog(LoginActivity.this); 
     dialog.setCancelable(false); 
     dialog.setMessage("Logging in.."); 
     showDialog(); 
     result=false; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     DBHelper db= new DBHelper(); 
     result= db.loginUser(uName,pWord); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     hideDialog(); 
     if (result == false) { 
      toastUserLogin(uName); 
     }else { 
      Toast.makeText(getApplicationContext(),"An error occured.",Toast.LENGTH_LONG).show(); 
     } 
    } 

    private void showDialog() { 
     if (!dialog.isShowing()) { 
      dialog.show(); 
     } 
    } 

    private void hideDialog() { 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 
    } 
} 

private void toastUserLogin(String userName) { 
    Toast.makeText(LoginActivity.this,"Welcome authenticated user "+ userName+ " !",Toast.LENGTH_LONG).show(); 
} 

どのようなヘルプもあります。 :) onPostExecute方法で

答えて

0

変更...あなたは上記のように私は私のコードを変更した後

if (result == true) { 
     toastUserLogin(uName); 
    }else { 
     Toast.makeText(getApplicationContext(),"An error occured.",Toast.LENGTH_LONG).show(); 
    } 
+0

。私のアプリケーションは、データベースに格納されている値を受け入れていないようです。 – PhilipJ

+0

この行は何を返すのですか?result = rSet.next(); ..? –

+0

質問が応答しているかどうかを確認するだけです。 – PhilipJ

関連する問題