java - ANDROID:mysql JDBC 中的用户登录认证

标签 java android mysql authentication jdbc

我真的需要有关在 Android 中使用 MySql 数据库中的 JDBC 库进行用户身份验证的帮助。我的数据库完全正常工作,但我不知道如何在我的登录 Activity 中提供身份验证。

这是我的 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;
}

登录 Activity 类。

@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 方法的改变...

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

关于java - ANDROID:mysql JDBC 中的用户登录认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545942/

相关文章:

java - 在 Java 中创建具有默认值的 Annotation 实例

java - 从 JSON 响应中提取值

android协程流手动重试

c# - Resource.Id 在 Xamarin 中不工作

mysql:内部加入而不是加入

php - 使用PHP向mysql插入数据时出现Facin问题

Mysql - 查询中的多个求和函数

java - 使用 Jasypt 加密和解密密码

c# - 面向 C# 开发人员的 Java

java - BufferReader 不会遍历整个文本