2012-08-14 167 views
0

我有一個活動,並希望從我的sqlite數據庫中獲取數據。它有效,但我的活動只檢索最後一行,而不是整列。我能做些什麼來獲得整個專欄?從sqlite數據庫獲取數據

這是在我的數據庫中的代碼:

public String getName() { 
String[] columns = new String[]{ KEY_ROWID, KEY_NAME }; 
Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null); 
c.moveToFirst(); 
while(!c.isAfterLast()) { 
String name = c.getString(c.getColumnIndex(KEY_NAME)); 
c.moveToNext(); 
} 
c.close(); 
return name; 
} 

這是在我的活動的代碼聯繫數據庫:

Database getdata = new Database(this); 
getdata.open(); 
String data = getdata.getName(); 
getdata.close(); 
+4

沒有看到代碼...我很無奈.. – user370305 2012-08-14 11:07:42

+0

你能否通過發佈代碼 – 2012-08-14 11:09:14

+0

來詳細說明你的問題。 – JohnD 2012-08-14 11:20:34

回答

1

見,正如我所說的,沒有看到代碼我米無奈。而看到你的代碼以後。

你只需要返回單String從該函數getName()代替它返回String[]

注:這僅僅是僞代碼..實際可能會有所不同..

public String[] getName() { 

     int i=0; 
     String[] columns = new String[]{ KEY_ROWID, KEY_NAME }; 
     Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null); 
     String name[] = new String[c.getCount()]; 
     c.moveToFirst(); 
      while(!c.isAfterLast()) { 
       name[i] = c.getString(c.getColumnIndex(KEY_NAME)); 
       c.moveToNext(); 
       i++; 
      } 
     c.close(); 
     return name; 
} 

而這其中,

Database getdata = new Database(this); 
getdata.open(); 
String data[] = getdata.getName(); 
getdata.close(); 
1

使用cursor.moveToFirst()方法示例下面

給出
if (cursor.moveToFirst()) { 
      do { 
       list.add(cursor.getString(0)); 
       list.add(cursor.getString(1)); 
       list.add(cursor.getString(2)); 
       list.add(cursor.getString(3)); 
       list.add(cursor.getString(4)); 
       list.add(cursor.getString(5)); 
       list.add(cursor.getString(6)); 
       } while (cursor.moveToNext()); 
      } 
1

更新你的代碼...

public String[] getName() { 
    String[] columns = new String[]{ KEY_ROWID, KEY_NAME }; 
    int i=0; 
    Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null); 
    c.moveToFirst(); 
    String[] names = new String[c.getCount()]; 
    while(!c.isAfterLast()) { 
     String name = c.getString(c.getColumnIndex(KEY_NAME)); 
     names[i]=name; 
     c.moveToNext(); 
     i++; 
    } 
    c.close(); 
    return names; 
} 

Database getdata = new Database(this); 
getdata.open(); 
String[] data = getdata.getName(); 
getdata.close();