2014-01-08 5 views
1

Я работаю на образце, в котором пользователь может войти в систему, используя свое имя пользователя и адрес электронной почты и другое, но в моем коде это позволяет только USERNAME и мой метод аутентификации ниже,Как я могу войти в мое приложение для Android с использованием имени пользователя и электронной почты (SQLite Database used)?

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; 
    } 

Есть ли запрос, который я должен использовать? Я не знаю, как использовать запрос SELECT с использованием предложения WHERE и допускать два параметра (USERNAME =? Или EMAIL =?).

Спасибо заранее.

ответ

0

решаемые, я просто изменил мой запрос "выбрать * из SIGNUP1 где USERNAME =" + "\ '" + userNameOrEmail + "\' + \" ИЛИ EMAIL = "+" \ '"+ userNameOrEmail +"' ", null);

0

Я укажу на ресурс, который позволяет экспериментировать и просматривать результаты запросов, так что вы можете узнать: http://www.w3schools.com/sql/sql_and_or.asp

После того, как вы понимаете, как использовать или функции, которые вы не будете иметь никаких проблем :).

(если вы хотите, я могу отправить фактический ответ, но я бы предпочел, чтобы вы узнали вместо скопирована)

EDIT: Я не вижу никаких причин, вы не сможете использовать или в SQLite. Существует даже doc page для оптимизации OR. Вы пытались его использовать?

+0

Я новичок в базе данных SQLite и Android, я знаю, как использовать этот запрос в другом SQL, но не может понять это в форме SQLite Query т. Я пробовал много поисков, но не получил никакого решения. –

1

запрос должен быть таким:

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;     
} 
+0

В этом случае пользователю необходимо предоставить как свое имя пользователя, так и электронную почту. Я считаю (но может быть и ошибаюсь), что OP намеревается разрешить пользователю входить в систему с одним, но не с обоими одновременно. – doydoy

+0

Он сказал: «Я работаю над образцом, в котором пользователь может войти в систему, используя свои USERNAME и EMAIL как ...», но ваш комментарий кажется логичным. – Aiapaec

+0

И затем далее указывается «предположим (USERNAME =? Или EMAIL =?)». В лучшем случае это двусмысленно. – doydoy

Смежные вопросы