2010-07-28 199 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對象,你正在使用。如果您需要任何種類的安全性,我還會在將密碼存儲到數據庫之前對其進行散列處理!