2012-04-26 57 views
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,評論」SQLite的瞭如何使用光標

我想利用PIC &註釋值字符串數組。

我的代碼是:

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

這不工作。

+0

你有什麼錯誤? – 2012-04-26 09:01:07

回答

10

你應該做的是這樣的:

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

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

2

,哪些是你應該做的是,以取代

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

通過

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

只需在循環中使用moveToNext即可進行迭代。

while(ct.moveToNext()){ 
    pictures[i]=c1.getString(1); 
    comments[i]=c1.getString(2); 
    i++; 
} 
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")); 
} 

使用此。我希望它能幫助你。

3

這是我做的方式

我喜歡

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列?(< - 一些說,這是不好的)

+1

這是最好的和簡單的答案 – DevMike 2017-05-13 22:27:56