0

我有一个活动,想从我的 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

3 回答 3

2

下面给出的使用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());
          }
于 2012-08-14T11:10:35.383 回答
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();
于 2012-08-14T11:25:02.180 回答
1

看,正如我所说,没有看到代码我很无助..在看到你的代码之后..

您只String从该函数返回 singlegetName()而不是 return 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();
于 2012-08-14T11:25:36.757 回答