Saruulbat
Saruulbat

Reputation: 321

Sqlite how to get string items using 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;
}

Table columns "id, pic, comment"

I want to take values of pic & comment to string array.

My code is:

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

this not working.

Upvotes: 7

Views: 38609

Answers (5)

NOT_A_PROGRAMMER
NOT_A_PROGRAMMER

Reputation: 1924

This is the way I do it

I prefer

getColumnIndex()

instead of number.

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();

Always use column name instead of position, because column position can change.

of course column name can change as well but let say if you add a new column and it position between column 1 and column 2. You need to change your code if you use number. But if you use name, you will be fine.

and it is more readable and what happened if you have 40 columns?(<-some say, it is bad)

Upvotes: 5

user4120685
user4120685

Reputation:

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

Use this. I hope it helps you.

Upvotes: 1

zionpi
zionpi

Reputation: 2671

You should do it like this:

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

and

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

Upvotes: 14

waqaslam
waqaslam

Reputation: 68177

simply use moveToNext in your loop to iterate.

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

Upvotes: 4

Alexandre B.
Alexandre B.

Reputation: 495

And what you should do is to replace

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

By

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

Upvotes: 2

Related Questions