2016-04-11 2 views
1

Мне очень нужна помощь в аутентификации пользователей в android с использованием библиотеки JDBC в базе данных MySql. Моя база данных полностью работает, но я не знаю, как предоставить Authenticaion в моей учетной записи.ANDROID: аутентификация пользователя в 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(); 
} 

Любая помощь будет оценена по достоинству. :)

ответ

0

Изменение метода onPostExecute ...

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

после того, как я изменить мой код, как вы уже говорилось выше. Кажется, мое приложение не принимает значения, которые хранятся в базе данных. – PhilipJ

+0

Что делает эта строка return result = rSet.next(); ..? –

+0

Просто чтобы проверить, отвечает ли мой запрос. – PhilipJ

Смежные вопросы