2012-08-14 195 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();