如何从SQLite数据库中绘制的可绘制存储ID并再次检索



我想在我的sqlite数据库中存储可绘制的ID(例如r.drawable.image(,然后以稍后将ID检索以放入listView中。我不想将图像保存为斑点,我只想存储ID。

现在,我创建了一个这样的表格,在其中存储可绘制的ID:

 db.execSQL("CREATE TABLE cards n" +
            "(n" +
            "card_id INT PRIMARY KEY, n" +
            "cpr VARCHAR(11) NOT NULL,n" +
            "card_type VARCHAR(30), n" +
            "front_photo VARCHAR(30), back_photo BLOB,n" +
            "FOREIGN KEY (cpr) REFERENCES users(cpr)n" +
            ")n" +
            ";n");
    db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(1, '170492-1802','Rejsekort', 'R.drawable.rejsekort_f');"
    );
    db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(2, '170492-1802','Bank Card', 'R.drawable.bankcard_f');"
    );
    db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(3, '170492-1802','Drivers Licence', 'R.drawable.bankcard_f');"
    );
    db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(4, '170492-1802','Sundhedskort', 'R.drawable.bankcard_f');"
    );
    db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(5, '170492-1802','Ungdomskort', 'R.drawable.bankcard_f');"
    );

然后,我尝试获取该表的所有ID并将它们添加到整数ArrayList中,以便我可以在这样的列表视图中显示它们:

ArrayList<Integer> images=new ArrayList<Integer>();
public void addImagesToListview() {
    DBHelper dbHelper = new DBHelper(MainActivity.this);
    db = dbHelper.getReadableDatabase();
    Cursor getImages = db.rawQuery("Select front_photo from cards", null);
    getImages.moveToFirst();
    while(!getImages.isAfterLast()) {
        String image = getImages.getString(0);
        int image2 = Integer.parseInt(image);
        images.add(image2);
        getImages.moveToNext(); }

但是由于某种原因,应用程序崩溃了吗?我可以在这样的阵列列表中添加Drawables的ID:

images.add(R.drawable.image);

所以当我只存储该ID并再次检索时,为什么它不起作用,因此看起来像这样:

images.add("ID from database");

将数据库更改为

front_photo INT

插入行时,插入评估的ID,而不是代表它的字符串。

int photoID = R.drawable.rejsekort_f;
db.execSQL("INSERT INTO cards (card_id , cpr, card_type, front_photo) VALUES(1, '170492-1802','Rejsekort', " + photoID + ");";

最新更新