Sqlite如何使用游标获取字符串项

Sar*_*bat 5 sqlite string android cursor

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;


    }
Run Code Online (Sandbox Code Playgroud)

表列"id,pic,comment"

我想将pic和comment的值取为字符串数组.

我的代码是:

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

这不起作用.

zio*_*npi 12

你应该这样做:

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

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


NOT*_*MER 5

这是我这样做的方式

我更喜欢

获取列索引()

而不是数字。

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();
Run Code Online (Sandbox Code Playgroud)

始终使用列名而不是位置,因为列位置可以改变。

当然列名也可以更改,但假设您添加一个新列并将其定位在第 1 列和第 2 列之间。如果使用数字,则需要更改代码。但是如果你使用name,你会没事的。

它更具可读性,如果您有 40 列会发生什么?(<-有人说,这很糟糕)