使用SQLite数据库进行Android登录验证。无法检索值

时间:2016-09-04 09:45:54

标签: android

我对android很新,这个项目涉及注册作为第一步,它从用户获取用户名和密码,下一个活动需要登录才能继续。需要登录才能验证用户名和密码。我无法获得用户名,这是表中的第一个字段和最后一个字段密码。

log.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub
    un = user.getText().toString();
    pw = pass.getText().toString();

    Record rec = new Record(MainActivity.this);
    SQLiteDatabase sqldb = rec.getReadableDatabase();
    Cursor c = sqldb.query(Record.tbname, null, 
            null, null, null, null, null);
    while(c.moveToNext())
    {
        username = c.getString(0);
        password = c.getString(3);
    }

      if(un == username && pw == password)
      {
        Toast.makeText(MainActivity.this, "Valid Credentials", Toast.LENGTH_LONG).show();

        Intent next = new Intent();
        next.setClass(MainActivity.this, HomeActivity.class);
        startActivity(next);
      }
      else
      {
          Toast.makeText(MainActivity.this, "Invalid Credentials", Toast.LENGTH_LONG).show();
      }  
  }
});

我无法获取值以验证登录详细信息。

2 个答案:

答案 0 :(得分:0)

请勿使用==来比较字符串值使用equalsIgnoreCase()

  

如果您不想忽略区分大小写,请使用equals()

if(un == username && pw == password)

if(un.equalsIgnoreCase(username) && pw.equalsIgnoreCase(password))

答案 1 :(得分:0)

==运算符仅适用于原始数据类型。对于字符串比较,您可以使用equals()或equalsIgnoreCase()。

由于您要比较用户名和密码,强烈建议使用equals()。

                 if(un.equals(username) && pw.equals(password))
                  {
                    Toast.makeText(MainActivity.this, "Valid Credentials", Toast.LENGTH_LONG).show();

                    Intent next = new Intent();
                    next.setClass(MainActivity.this, HomeActivity.class);
                    startActivity(next);
                  }
                  else
                  {
                      Toast.makeText(MainActivity.this, "Invalid Credentials", Toast.LENGTH_LONG).show();
                  }