2010-07-28 201 views
0

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

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




} 

} 

我应该使用从“选择”“”“其中”语句?或者有另一种方式?

回答

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对象,你正在使用。如果您需要任何种类的安全性,我还会在将密码存储到数据库之前对其进行散列处理!