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吗?哦,谢谢,我忘了这个解决方案很简单,我完全忘记了它,我很高兴它很有用;)