tags:

views:

24

answers:

1

From the previous question I asked, I am still having the same question. I do not know how to use database (SQLite) to 'sync' with my application to log in or register

 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();
 }
});  




}

}

Should I use the 'select' 'from' 'where' statement? Or there is another way?

A: 

Where you have

username.equals("select username from Users")

you are actually testing if what the user entered is literally the same object (which it is not). To authenticate against a local database of Users, you would want to try something more like this:

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
}

Where 'db' is the SQLiteDatabase object you are working with. If you need any kind of security, I would also hash the password before you store it in the database!

ZachM