如何将SQLite行添加到ArrayList<>

时间:2014-04-02 12:41:23

标签: android sqlite arraylist

我从SQLite-DB表中检索所有行

Cursor  cursor = db.rawQuery("select * from table",null);

然后我想将每一行添加到ArrayList

请帮忙!

3 个答案:

答案 0 :(得分:2)

执行此操作的代码看起来像这样,具体取决于表中的内容。您必须创建一个能够在表中表示Row的类。

例如,如果您的表中有人,名称和年龄,则需要将对象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;
    }
}

答案 1 :(得分:1)

如果您使用的是自定义对象数组,请使用以下内容:

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()更改为本地上下文或您在活动中使用上下文的任何方式。

DB适配器类中的数据检索方法:

> public Cursor getImageNameForList() {         
return db.rawQuery("select " + IMAGE_PATH + " from "+ TABLE_PRODUCT_IMAGES , null);     
}

答案 2 :(得分:0)

在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();

之后将你的arraylist添加到设置为ListView的数组适配器