SQLite android登录和注册

时间:2010-07-28 03:30:34

标签: sql android

从上一个问题我问过,我仍然有同样的问题。我不知道如何使用数据库(SQLite)与我的应用程序“同步”登录或注册

 package log1.log2;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class Login extends Activity {


 UserDB db = new UserDB(this);
/** Called when the activity is first created. */

 private EditText etUsername;
 private EditText etPassword;
 private Button btnLogin;
 private Button btnRegister;
 private TextView lblResult;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
     // Get the EditText and Button References
        etUsername = (EditText)findViewById(R.id.usernametxt);
        etPassword = (EditText)findViewById(R.id.passwordtxt);
        btnLogin = (Button)findViewById(R.id.btnLogin);
        btnRegister = (Button)findViewById(R.id.btnRegister);
        lblResult = (TextView)findViewById(R.id.msglbl);

        //Cursor c = (Cursor) db.getAllTitles();

        //Button btnArrival = (Button) findViewById(R.id.btnRegister);
     //btnArrival.setOnClickListener(this);


    // Set Click Listener

        btnRegister.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
          Intent intent=new Intent(Login.this,Register.class);
            startActivity(intent);

         }
        });

    btnLogin.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
  db.open();
  // Check Login
  String username = etUsername.getText().toString();
  String password = etPassword.getText().toString();

  if(username.equals("select username from Users")){
   if(password.equals("select password from users where username = username"))
   {

     Intent intent=new Intent(Login.this,Test.class);
     startActivity(intent);


   }
   else
   {
    lblResult.setText("Wrong password");
   }

  } else {
   lblResult.setText("Username does not exist. Please register.");
  }

  db.close();
 }
});  




}

}

我应该从''where'语句中使用'select''吗?还是有另一种方式?

1 个答案:

答案 0 :(得分:0)

你在哪里

username.equals("select username from Users")

实际上,您正在测试用户输入的内容是否与字面上相同(不是这样)。要对本地的用户数据库进行身份验证,您可能希望尝试更多类似的内容:

Cursor c = db.rawQuery("SELECT username FROM Users WHERE username='?' AND password='?'", new String[] {username, password});
if(c.moveToFirst()) {
  // at least one row was returned, this should signal success
} else {
  // authentication failed
}

其中'db'是您正在使用的SQLiteDatabase对象。如果您需要任何类型的安全性,我还会在将密码存储到数据库之前对其进行哈希处理!