2012-04-26 36 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