我有一个活动,想从我的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();
答案 0 :(得分: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());
}
答案 1 :(得分: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();
答案 2 :(得分: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();