[英]Different types of users logging in to Android App with SQLite Database
對不起,如果這是一個愚蠢的問題,但我是 Android 開發的新手。 我正在嘗試創建一個登錄屏幕,當他們登錄時,該屏幕將引導醫生進行一項活動,並將護士引導至另一項活動。 這似乎不起作用。 我已將代碼放入 login.java 類中:
btLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String email = loginemail.getText().toString();
String password = loginpassword.getText().toString();
Boolean Chkemailpass = db.emailpassword(email, password);
if(Chkemailpass == true) {
Cursor typeofuser;
typeofuser = db.checkUser(loginemail.getText().toString()); //get user type from database
if(typeofuser.equals("Nurse")) {
Intent mainintent = new Intent(Login.this, NurseHome.class);
startActivity(mainintent);}
else if (typeofuser.equals("Doctor")){
Intent intent = new Intent(Login.this, DoctorHome.class);
startActivity(intent);}
}
else
Toast.makeText(getApplicationContext(),"Wrong email or password", Toast.LENGTH_SHORT).show();
}
});
}
}
而且我在與用戶類型相關的 databasehelper 類中也有這段代碼:
public Cursor checkUser(String email) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT TYPEOFUSER from user_table WHERE EMAIL=email", null);
return res;
}
所有幫助將不勝感激,謝謝。
checkUser()
的參數email
是一個字符串,所以在你的 sql 語句中它應該像這樣用單引號括起來:
SELECT TYPEOFUSER from user_table WHERE EMAIL = 'email'
但是將參數傳遞給rawQuery()
的正確方法是使用?
占位符和使用第二個參數作為字符串參數數組(而不是null
)。
也不要返回Cursor
,而是將用戶的類型作為checkUser()
的 String checkUser()
。
所以改成這樣:
public String checkUser(String email) {
String result = "";
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery(
"SELECT TYPEOFUSER from user_table WHERE EMAIL = ?",
new String[] {email}
);
if (res.moveToNext()) {
result = res.getString(0);
}
res.close();
return result;
}
而不是:
Cursor typeofuser;
typeofuser = db.checkUser(loginemail.getText().toString());
用這個:
String typeofuser = db.checkUser(loginemail.getText().toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.