1
Ich brauche wirklich Hilfe in Bezug auf Benutzerauthentifizierung in Android mit JDBC-Bibliothek in MySql-Datenbank. Meine Datenbank ist voll funktionsfähig, aber ich habe keine Ahnung, wie ich Authenticaion in meiner Login-Aktivität bereitstellen kann.ANDROID: Benutzeranmeldung Authentifizierung in Mysql JDBC
Hier ist meine DBHelper-Klasse.
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;
}
Anmeldung Aktivitätsklasse.
@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();
}
Jede Hilfe wird geschätzt. :)
, nachdem ich meinen Code ändern, wie Sie oben angegeben. Es scheint, dass meine Anwendung keine Werte akzeptiert, die in der Datenbank gespeichert sind. – PhilipJ
was gibt diese Zeile zurück result = rSet.next(); ..? –
Nur um zu überprüfen, ob meine Abfrage eine Antwort gibt. – PhilipJ