簡體   English   中英

如何同時使用用戶名和電子郵件(使用SQLite數據庫)登錄我的android應用程序?

[英]How can i login in my android application using Username and Email both(SQLite Database used)?

我正在研究一個示例,其中用戶可以同時使用其USERNAME和EMAIL登錄,但是在我的代碼中,該操作僅允許USERNAME使用,而我的身份驗證方法如下所示,

public String getSingleEntry(String userNameOrEmail)
    {

        Cursor cursor=db.rawQuery("select * from SIGNUP1 where USERNAME=?", new String[]{userNameOrEmail});


        if(cursor.getCount()<1) // UserName Not Exist
        {
            cursor.close();
            return "NOT EXIST";
        }
        cursor.moveToFirst();
        String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
        cursor.close();
        return password;                
    }

我的另一種方法將從SQLite數據庫獲取所有用戶數據,

public String getUserData(String userNameOrEmail){

        Cursor c = db.rawQuery("select * from SIGNUP1 where USERNAME="+"\""+userNameOrEmail+"\"", null); 


        c.moveToFirst();
        String result="";
        String iFirstName = c.getString(c.getColumnIndex("FIRSTNAME"));
        String iLastName = c.getString(c.getColumnIndex("LASTNAME"));
        String iUserName = c.getString(c.getColumnIndex("USERNAME"));
        String iEmail = c.getString(c.getColumnIndex("EMAIL"));
        String iPassword = c.getString(c.getColumnIndex("PASSWORD"));
        String iGender = c.getString(c.getColumnIndex("GENDER"));
        String iHobbies = c.getString(c.getColumnIndex("HOBBIES"));

        for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            result = result + "\nName : "+iFirstName + " " +iLastName + "\nUserName : "+iUserName + "\nEmail : "+iEmail + "\nPassword : "+ iPassword + "\nYou are : " +iGender + "\nYour Hobbies : "+iHobbies;

        }
        return result;
    }

是否有我必須使用的查詢? 我不知道如何通過WHERE子句使用SELECT查詢,並且假設有兩個參數(USERNAME =?或EMAIL =?)。

提前致謝。

查詢應該是這樣的:

select * from SIGNUP1 where (USERNAME='someusername' or EMAIL='someemail')

並且您應該替換''之間的字符串

public String getSingleEntry(String userNameOrEmail,userEmail)
    {

        Cursor cursor=db.rawQuery("select * from SIGNUP1 where (USERNAME=? or EMAIL=?)", new String[]{userNameOrEmail,userEmail});


    if(cursor.getCount()<1) // UserName Not Exist
    {
        cursor.close();
        return "NOT EXIST";
    }
    cursor.moveToFirst();
    String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
    cursor.close();
    return password;                
}

我將指向一個允許您實驗和查看查詢結果的資源,以便您可以學習: http : //www.w3schools.com/sql/sql_and_or.asp

一旦您了解了如何使用OR函數,您就不會有問題了:)。

(如果您希望我可以發布實際答案,但我希望您學習而不是復制)

編輯:我看不到任何原因您將無法在SQLite中使用OR。 甚至還有一個用於OR優化的文檔頁面 您是否嘗試過使用它?

解決了,我剛剛將查詢修改為“從SIGNUP1中選擇*,其中USERNAME =“ +” \\'“ + userNameOrEmail +” \\'+ \\“ OR EMAIL =” +“ \\'” + userNameOrEmail +“'”,null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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