我使用以下代码仅获取数组上数据库的一列并显示它
public ArrayList<String> dbtoArr() {
ArrayList<String> arr = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
String q = "SELECT * FROM persons WHERE 1";
Cursor c = db.rawQuery(q, null);
c.moveToFirst();
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("name")) != null) {
arr.add(c.getString(c.getColumnIndex("name")));
}
c.moveToNext();
}
db.close();
return arr;
}
我想检索所有列的所有行
我不知道android中可以携带此类数据的任何对象
如果我有5个或更多列,我将如何携带它们?
提前感谢。
答案 0 :(得分:0)
创建一个类,其中声明的每个成员变量都对应于您的列。我们将其命名为MyClass
。
然后,您需要将值设置为数据库方法中的成员变量,并返回创建的对象列表。
public ArrayList<MyClass> dbtoArr() {
ArrayList<MyClass> arr = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
String q = "SELECT * FROM persons WHERE 1";
Cursor c = db.rawQuery(q, null);
c.moveToFirst();
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("name")) != null) {
arr.add(new MyClass().setName(c.getString(c.getColumnIndex("name"))));
}
c.moveToNext();
}
db.close();
return arr;
}
答案 1 :(得分:0)
你可以做的是创建一个POJO(Plain Old Java Object)类,并且有一个方法可以传入Cursor并为每个属性赋值。
这样的事情:
class Person {
String name;
int age;
...
public Person(Cursor c) {
name = c.getString(c.getColumnIndex("name"));
age = c.getInt(c.getColumnIndex("age"));
...
}
}
然后,不是拥有一个字符串的ArrayList,而是拥有一个人员的ArrayList
ArrayList<Person> persons = new ArrayList<>();
...
while (!c.isAfterLast()) {
Person p = new Person(c);
persons.add(p);
}