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

これが私のやり方です

私は好む

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列あるとどうなりますか?(<-悪いと言う人もいます)

于 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 に答える