从SQLite中选择数据到ListArrays中

时间:2011-07-27 15:44:54

标签: android sqlite

我这几天一直在绞尽脑汁,我无法用Android / Java中的SQLite数据库来解决问题。我正在尝试从SQLite数据库中选择两行到ListArray(或者两行,每行一行。不确定那会更好还是更糟)我只是不明白该怎么做。我已经尝试过各种各样的数据库管理器类,但是我没有找到我需要的东西,看起来我应该能够完成这个简单的任务而没有我在其他数据库管理器中看到的额外功能。有没有简单的方法来从现有的SQLite数据库中查询一些数据并将其放入ListArray中以便我可以使用它?我意识到我需要将数据库从资产复制到Android数据库路径中,我可以处理该部分。我还需要能够修改每行的一列。我不需要创建数据库或表或行。我恳请有人帮我这个,因为我认为我写的任何代码(从互联网上复制)都是完全没用的。

1 个答案:

答案 0 :(得分:1)

您可以创建一个这样的方法:

private List<MyItem> getAllItems()
    List<MyItem> itemsList = new ArrayList<MyItem>();
    Cursor cursor = null;
    try {
        //get all rows
        cursor = mDatabase.query(MY_TABLE, null, null, null, null,
                null, null);
        if (cursor.moveToFirst()) {
            do {
                MyItem c = new MyItem();
                c.setId(cursor.getInt(ID_COLUMN));
                c.setName(cursor.getString(NAME_COLUMN));
                itemsList.add(c);
            } while (cursor.moveToNext());
        }
    } catch (SQLiteException e) {
        e.printStackTrace();
    } finally {
        cursor.close();
    }
    return itemsList;
}

这将在您的课程内部说MyDatabaseHelper,您还必须声明:

private static class DatabaseHelper extends SQLiteOpenHelper{

    private final static String DATABASE_CREATE="create table " + MY_TABLE + " (id integer primary key, country string);";

    public DatabaseHelper(Context context,String name, CursorFactory factory, int version){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                          int newVersion){
        Log.w(TAG, "Upgrading database from version " + oldVersion 
              + " to "
              + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS "+ MY_TABLE);
        onCreate(db);
    }
}    

用于open()close()数据库。