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

时间:2012-04-26 08:10:17

标签: android string sqlite 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;


    }

表格列“id,pic,comment”

我想拍摄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++;
        }

这不起作用。

5 个答案:

答案 0 :(得分:12)

你应该这样做:

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

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

答案 1 :(得分:4)

只需在循环中使用moveToNext进行迭代。

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

答案 2 :(得分: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列,会发生什么?(< -some say,它很糟糕)

答案 3 :(得分:2)

你应该做的是替换

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

通过

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

答案 4 :(得分: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"));
}

使用它。我希望它可以帮助你。