Вопрос по string, android, sqlite – Sqlite, как получить строковые элементы с помощью курсора

5
public Cursor getImages(long rowId) throws SQLException
    {
        Cursor mCursor =
                db.rawQuery("select * from Pictures WHERE id=" + rowId + ";", null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;


    }

Столбцы таблицы & quot; идентификатор, фотография, комментарий & quot;

Я хочу принять значения pic & amp; комментарий к строковому массиву.

Мой код:

int i=0;
        Cursor c1 = db.getImages(memberId);     
        c1.moveToFirst();
        while(c1.isLast()){
            pictures[i]=c1.getString(1);
            comments[i]=c1.getString(2);
            i++;
        }

это не работает.

Какую ошибку вы получили ?? Never Quit

Ваш Ответ

5   ответов
2

И что вы должны сделать, это заменить

c1.moveToFirst();
while(c1.isLast()){
     //your code
}

От

//c1.moveToFirst();
while(c1.moveToNext()){
     //your code
}
4

moveToNext в вашем цикле, чтобы повторить.

while(ct.moveToNext()){
     pictures[i]=c1.getString(1);
     comments[i]=c1.getString(2);
     i++;
}
12

Вы должны сделать это так:

c1.getString(cursor.getColumnIndex("pic"));

а также

c1.getString(cursor.getColumnIndex("comment"));

4

Я так делаю

я предпочитаю

getColumnIndex()

вместо номера.

if(cursor.moveToFirst()){
    do{
          String varaible1 = cursor.getString(cursor.getColumnIndex("column_name1"));
          String varaible2 = cursor.getString(cursor.getColumnIndex("column_name2"));

       }while (cursor.moveToNext());
}
cursor.close();

Всегда используйте имя столбца вместо позиции, потому что позиция столбца может измениться.

Конечно, имя столбца также может измениться, но, скажем, если вы добавляете новый столбец и он располагается между столбцом 1 и столбцом 2. Вам нужно изменить свой код, если вы используете номер. Но если вы используете имя, у вас все будет хорошо.

и это более читабельно, и что случилось, если у вас есть 40 столбцов? (& lt; -на некоторые говорят, это плохо)

Error: User Rate Limit Exceeded
1
Cursor c = db.rawQuery("select username from user_information where username ='" + username_txt.getText() + "'", null);
c.moveToFirst();
if (c.moveToFirst()) {
    username = c.getString(c.getColumnIndex("username"));
}

Использовать этот. Я надеюсь, что это поможет вам.

Похожие вопросы