2013-12-23 2 views
0

Я пытаюсь создать простую систему входа. И это коэд в классе базы данных. Правильно ли мой метод? Он должен возвращать true, если и имя пользователя, и пароль являются правильными и ложными, если один из них ошибочен или нет в базе данных (не зарегистрирован)? Есть ли более простой способ кодирования этого метода?Android/Java: Является ли мой код правильным?

public boolean getAccount(String name, String password) { 
       int test = 0; 
       database = getReadableDatabase(); 
       String sql = "SELECT * FROM tbl_account WHERE username='name' AND password='password'"; 
       Cursor c = database.rawQuery(sql, null); 
       if (c.moveToFirst()) { 
         do { 
           if (c.getString(0).isEmpty()) { 
             test = 0; 
           } 
           else if (c.getString(0).isEmpty() == false) { 
             if (name.equals(c.getString(0))) { 
               if (c.getString(1).isEmpty()) { 
                 test = 0; 
               } 
               else if (password.equals(c.getString(1))) { 
                 test = 1; 
               } 
             } 
           } 
         } while (c.moveToNext()); 
       } 

       if (test == 0) { 
         return false; 
       } else { 
         return true; 
       } 

     } 

ответ

0

Я думаю, что ваш SQL должен быть:

String sql = "SELECT * FROM tbl_account WHERE username='" + name + 
    "' AND password='" + password + "'"; 

попробовать это SQL. надеюсь, это поможет.

+0

Всегда используйте параметризованный запрос. Это дает мне пониженное голосование, потому что оно продвигает субстандартную практику. –

3

Лучшая практика заключается в использовании? заполнители с аргументами выбора, где вы можете:

String sql = "SELECT * FROM tbl_account WHERE username = ? AND password = ?"; 
Cursor c = database.rawQuery(sql, new String[] {name, password}); 

Это позволяет избежать проблем, когда сами аргументы содержат символы, такие как кавычки и apostophes, которые могли бы нарушить вашу построенную строку SQL.

+0

Спасибо за подсказку. –

+0

hi NigelK, я не предлагал ему за клевету на код, я просто узнал об ошибке, и я очень хорошо знаю, что такое линия кодирования и кодирование, оскорбление, спасибо за отрицательную маркировку? – Yogendra

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