2016-02-28 6 views
0

Я Нижеследующая таблицавыборки данных из SQLite андроида

private static final String DB_TABLE = "create table user (id integer primary key autoincrement, " 
              + "username text not null, password text not null, tel text not null, info text not null, job text);"; 

Как я могу получить данные с помощью курсора и преобразовать его в строку? потому что я получаю null. Должен ли я установить? Мне нужно получить работу и информацию по имени пользователя и паролю?

Cursor theUser = dbHelper.fetchUser(thisUsername, thisPassword); 
    if (theUser != null) { 

// How here also fetch a info and job in String? 

      startManagingCursor(theUser); 
      if (theUser.getCount() > 0) { 
       //saveLoggedInUId(theUser.getLong(theUser.getColumnIndex(DatabaseAdapter.COL_ID)), thisUsername, thePassword.getText().toString()); 
       stopManagingCursor(theUser); 
       theUser.close(); 
       // String text = dbHelper.getYourData(); 
       Intent i = new Intent(v.getContext(), InfoActivity.class); 
       startActivity(i); 
      } 

      //Returns appropriate message if no match is made 
      else { 
       Toast.makeText(getApplicationContext(), 
         "You have entered an incorrect username or password.", 
         Toast.LENGTH_SHORT).show(); 
       // saveLoggedInUId(0, "", ""); 
      } 
      stopManagingCursor(theUser); 
      theUser.close(); 
     } 

     else { 
      Toast.makeText(getApplicationContext(), 
        "Database query error", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 

private static final String LOGIN_TABLE = "user"; 
    //Table unique id 
    public static final String COL_ID = "id"; 
    //Table username and password columns 
    public static final String COL_USERNAME = "username"; 
    public static final String COL_PASSWORD = "password"; 
    private static final String KEY_PHONE = "tel"; 
    private static final String INFO = "info"; 
    private static final String JOB = "info"; 

public Cursor fetchUser(String username, String password) { 
    Cursor myCursor = database.query(LOGIN_TABLE, 
      new String[] { COL_ID, COL_USERNAME, COL_PASSWORD }, 
      COL_USERNAME + "='" + username + "' AND " + 
      COL_PASSWORD + "='" + password + "'", null, null, null, null); 

    if (myCursor != null) { 
     myCursor.moveToFirst(); 
    } 
    return myCursor; 
} 

спасибо заранее !!!

Update:

String name = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.COL_USERNAME)); 
String phone = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.KEY_PHONE)); 
String tel = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.KEY_PHONE)); 
String info = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.INFO)); 
String job = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.JOB)); 
String id = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.COL_ID)); 

Как пишет запрос пихты этот:

public Cursor fetchAllUsers() { 
    return database.query(LOGIN_TABLE, new String[] { COL_ID, COL_USERNAME, 
      COL_PASSWORD }, null, null, null, null, null); 
} 
+0

Курсор дает мне в LogCat --- [email protected] – Sultan

+0

Пожалуйста, включите полный LogCat. Этот комментарий выглядит так, как будто вы напечатали объект Cursor –

+0

Кроме того, похоже, что строки 'INFO' и' JOB' одинаковы –

ответ

1

Для перемещения между отдельными строками данных, вы можете использовать moveToFirst() и moveToNext() методы. Метод isAfterLast() позволяет проверить, достигнут ли конец результата запроса.

Cursor предоставляет типизированные методы get*(), например. getLong(columnIndex), getString(columnIndex) для доступа к данным столбца для текущей позиции результата. «ColumnIndex» - это номер столбца, к которому вы обращаетесь.

Курсор также предоставляет метод getColumnIndexOrThrow(String), который позволяет получить индекс столбца для имени столбца таблицы.

Курсор должен быть закрыт вызовом метода close(), когда вы закончите с ним.


Ваш код должен выглядеть примерно так, чтобы получить информацию о колонке, но обратите внимание на ваш вопрос, что работа и столбцы INFO имеют ту же строку, так что они будут возвращать тот же индекс столбца, пока не исправить

String info = theUser.getString(theUser.getColumnIndex(DatabaseAdapter.INFO)) 
+0

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

+0

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

+0

Спасибо, наконец, я понял! но вот только способ получить это? Я обновляю questin – Sultan

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