【发布时间】:2014-04-02 12:41:22
【问题描述】:
我从我的 SQLite-DB 表中检索所有行
Cursor cursor = db.rawQuery("select * from table",null);
然后我想将每一行添加到ArrayList
请帮忙!
【问题讨论】:
我从我的 SQLite-DB 表中检索所有行
Cursor cursor = db.rawQuery("select * from table",null);
然后我想将每一行添加到ArrayList
请帮忙!
【问题讨论】:
执行此操作的代码如下所示,具体取决于您的表中的内容。您必须创建一个能够在表中表示行的类。
例如,如果您的表中有人,具有姓名和年龄,您将需要一个对象 Human(String name, int age) 放入列表中。
SQLiteDatabase db = helper.getReadableDatabase();
ArrayList<Human> results = new ArrayList<Human>();
try {
String rawQuery = "Select name, age from people";
Cursor c = db.rawQuery(rawQuery, null);
try {
if (!c.moveToFirst())
return null;
do {
results.add(new Human(c.getString(0),c.getInt(1)));
} while (c.moveToNext());
} finally {
c.close();
}
} finally {
db.close();
}
public class Human {
private String name;
private int age;
public Human (String name, int age) {
this.name = name;
this.age = age;
}
}
【讨论】:
如果您使用的是自定义对象数组,则使用如下:
public void fillDataToArray() {
ArrayList<BeanClass> arrayList = new ArrayList<BeanClass>();
DatabaseHandler db = new DatabaseHandler(getActivity());
db.open();
try
{
Cursor c = db.getImageNameForList();
if (c != null && c.getCount() > 0) {
c.moveToFirst();
for (int count = 0; count < c.getCount(); count++) {
Beanclass detail = new Beanclass ();
detail.setName(c.getString(c
.getColumnIndex(DatabaseHandler._ID)));
detail.setPath(c.getString(c
.getColumnIndexOrThrow(DatabaseHandler._PATH)));
arrayList.add(detail);
c.moveToNext();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
c.close();
db.close();
}
如果您在活动中使用它,请将getActivity() 更改为本地上下文或您在活动中使用上下文的任何方式。
数据库适配器类中的数据检索方法:
> public Cursor getImageNameForList() {
return db.rawQuery("select " + IMAGE_PATH + " from "+ TABLE_PRODUCT_IMAGES , null);
}
【讨论】:
在您的 Db Adapter 类中,添加此方法
public ArrayList<String>getData()
{
ArrayList<String>names=new ArrayList<String>();
Cursor c = getReadableDatabase().rawQuery("Select * from tableName", null);
c.moveToFirst();
do
{
String s1=c.getString(c.getColumnIndex("<Column_Name>"));
names.add(s1);
}while(c.moveToNext());
return names;
}
然后在你的活动类中添加这个
ArrayList<String> cid;
DB_Adapter database = new DB_Adapter(getApplicationContext(), "<your schema name>", null, 1);
cid=database.getData();
之后,将您的数组列表添加到设置为 ListView 的数组适配器中
【讨论】: