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;
}

表格列“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++;
}

这不起作用。

4

5 回答 5

14

你应该这样做:

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

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

于 2012-04-26T08:21:39.457 回答
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();

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

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

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

于 2016-02-10T21:10:15.570 回答
4

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

while(ct.moveToNext()){
     pictures[i]=c1.getString(1);
     comments[i]=c1.getString(2);
     i++;
}
于 2012-04-26T08:29:16.163 回答
2

而你应该做的是更换

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

经过

//c1.moveToFirst();
while(c1.moveToNext()){
     //your code
}
于 2012-04-26T08:28:53.397 回答
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"));
}

用这个。我希望它对你有帮助。

于 2015-03-10T10:52:36.317 回答