繁体   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