簡體   English   中英

使用 SQLite 數據庫登錄 Android App 的不同類型用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM