Android 返回SQlite数据库中5列的所有行

Android 返回SQlite数据库中5列的所有行,android,Android,我使用以下代码仅获取数组中数据库的一列并显示它 public ArrayList<String> dbtoArr() { ArrayList<String> arr = new ArrayList<>(); SQLiteDatabase db = getReadableDatabase(); String q = "SELECT * FROM persons WHERE 1"; Cursor c

我使用以下代码仅获取数组中数据库的一列并显示它

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;
    }
public ArrayList dbtoArr(){
ArrayList arr=新的ArrayList();
SQLiteDatabase db=getReadableDatabase();
String q=“从人员中选择*,其中1”;
游标c=db.rawQuery(q,null);
c、 moveToFirst();
而(!c.isAfterLast()){
if(c.getString(c.getColumnIndex(“名称”))!=null){
arr.add(c.getString(c.getColumnIndex(“name”));
}
c、 moveToNext();
}
db.close();
返回arr;
}
我想检索所有列的所有行

我不知道安卓系统中有任何对象可以携带这种数据

假设我有5根或更多的柱子,我将如何搬运它们


提前感谢。

创建一个类,声明每个成员变量对应于您的列。让我们把它命名为
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;
    }
public ArrayList dbtoArr(){
ArrayList arr=新的ArrayList();
SQLiteDatabase db=getReadableDatabase();
String q=“从人员中选择*,其中1”;
游标c=db.rawQuery(q,null);
c、 moveToFirst();
而(!c.isAfterLast()){
if(c.getString(c.getColumnIndex(“名称”))!=null){
arr.add(new MyClass().setName(c.getString(c.getColumnIndex(“name”))));
}
c、 moveToNext();
}
db.close();
返回arr;
}

您可以创建一个POJO(纯旧Java对象)类,并使用一个方法传入游标并为每个属性分配其值

大概是这样的:

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);
} 
arraylistpersons=new ArrayList();
...
而(!c.isAfterLast()){
人员p=新人员(c);
增加(p);
} 

您不能创建一个以列为字段的对象,然后返回一个对象的ArrayList吗?哦,谢谢,我忘了这个解决方案很简单,我完全忘记了它,我很高兴它很有用;)