Sqlite how to get string items using cursor
Solution 1
You should do it like this:
c1.getString(cursor.getColumnIndex("pic"));
and
c1.getString(cursor.getColumnIndex("comment"));
Solution 2
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)
Solution 3
simply use moveToNext
in your loop to iterate.
while(ct.moveToNext()){
pictures[i]=c1.getString(1);
comments[i]=c1.getString(2);
i++;
}
Solution 4
And what you should do is to replace
c1.moveToFirst();
while(c1.isLast()){
//your code
}
By
//c1.moveToFirst();
while(c1.moveToNext()){
//your code
}
Saruulbat
Updated on July 10, 2022Comments
-
Saruulbat almost 2 years
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.
-
DragonFire almost 5 yearsAlways use column name instead of position, because column position can change. Are there any differences in performance between the two?
-
NOT_A_PROGRAMMER almost 5 years@DragonFire I believe position is faster