2010-07-28 4 views
0

De la question précédente j'ai demandé, j'ai toujours la même question. Je ne sais pas comment utiliser la base de données (SQLite) pour « synchronisation » avec mon application pour vous connecter ou vous inscrireSQLite android se connecter et s'inscrire

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




} 

} 

Dois-je utiliser le « select » « de » déclaration 'où? Ou il y a un autre moyen?

Répondre

0

Où vous avez

username.equals("select username from Users") 

vous testez en fait, si ce que l'utilisateur est entré est littéralement le même objet (ce qui ne l'est pas). Pour authentifier à une base de données locale des utilisateurs, vous voulez essayer quelque chose comme ceci:

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 
} 

Où db est le SQLiteDatabase objet que vous travaillez. Si vous avez besoin d'une sécurité, je voudrais aussi hacher le mot de passe avant de le stocker dans la base de données!

Questions connexes