如何创建android登录

时间:2016-07-29 06:43:53

标签: android-sqlite

这是我的登录选项的android代码。帮助我找出了问题所在。

我的DatabaseHelper类:

    public String getAllData(String name) {
    // TODO Auto-generated method stub
    SQLiteDatabase db=this.getReadableDatabase();

//查询检索名称并传递

    Cursor res = db.rawQuery("select User_Name,User_Pass from "+Table_Name, null);
    String a,b;
    b="not found";
    if(res.moveToFirst()){
        do{
            a=res.getString(1);

//check name

            if(a.equals(name)){
                b=res.getString(3);
                break;
            }
        }while(res.moveToNext());
    }

//return corresponding password
    return b;       
}

我的活动课程:

public void showData(){
            submitButton.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
             name=userNameEditText.getText().toString();
             password=passwordEditText.getText().toString();
             String pass=myDb.getAllData(name);

//matching password

             if(password.equals(pass)){
                  Intent intent=new Intent(UserActivity.this,Meal_Information_Activity.class);
                    startActivity(intent);

                }
                else{
                    Toast.makeText(getBaseContext(),"Password doesn't match", Toast.LENGTH_LONG).show();
                }               
        }
    });
}

1 个答案:

答案 0 :(得分:1)

我相信您将用户的用户名传递给DB方法。在方法内部时,您将根据光标返回的user_password检查用户名。索引的游标对象将像数组一样工作 - 从0开始。当您说a=res.getString(1);时,您将获得查询为每行选择的第二项,在您的情况下,是user_password

我还建议稍微更改一下查询,只从数据库中提取所需的信息,而不是所有记录。例如,您的用户将使用用户名和密码登录(您已经在onClick()中检索这些值),因此使用这两个元素来构造适当的查询。由于您同时拥有这两个值,因此如果您更改了DatabaseHelper.getAllData()(或创建了一个验证用户凭据的新方法)以接受这两个参数(用户名和密码),则可以构建查询以选择密码WHERE User_name = 'username'

通过这种方式,您将只返回数据库中的一行,而不是每一行。您可以先检查光标对象是否包含某些内容(如果它没有,这意味着用户名无效 - 或者至少不在您的数据库中),然后根据用户输入的内容检查它返回的密码

希望这有帮助!