来自sqlite数据库android的getAll

时间:2013-06-08 23:46:35

标签: android database eclipse sqlite datetime

我想制作一份已注明日期的备忘录,我将活动日期与日历分开放置。如何根据我提供的日期显示日历中的所有事件?

public List<Foto> getAllFotoList() {
        List<Foto> fotoList = new ArrayList<Foto>();

        String query_tb_foto = "SELECT * FROM " + TABLE_FOTO;

        // SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query_tb_foto, null);

        if (cursor.moveToFirst()) {
            do {
                // Siswa siswa = new Siswa(cursor.getString(0),
                // cursor.getString(1));
                Foto foto = new Foto(cursor.getString(cursor
                        .getColumnIndexOrThrow("COL_JUDULFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_IMG")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_DESFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_STARTDATEFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_STARTTIMEFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_ENDDATEFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_ULANGFT")),
                        cursor.getString(cursor
                                .getColumnIndexOrThrow("COL_ALARMFT")));
                fotoList.add(foto);
            } while (cursor.moveToNext());
            return fotoList;
        }
        return null;
    }

这是真的吗?谢谢你的回应。

2 个答案:

答案 0 :(得分:0)

您需要使用SELECT * FROM some_table WHERE date('1990-01-01');之类的内容(只需插入您的自定义日期)。这应该返回表中具有相同日期值的所有结果。请参阅this post以获取进一步说明,并SQLite documentation查看您可以使用日期做些什么。

两个回答你的第二个问题,使用ListView应该没问题。我个人使用ArrayList填充ListViewSQLite个结果,因为查询会返回任意数量的结果。 ArrayList可以轻松存储和访问这些结果。

答案 1 :(得分:0)

你是否把GMTTIMESTAMP的日期弄疼了? 如果是的话

 String Q= "SELECT * FROM "+TABLE_FOTO +" ORDER BY GMTTIMESTAMP DESC;"; 

会将最新数据的所有行放在最前面。

或者您可以通过主键引用它?

我总是被告知要确保你记得在括号旁放一个分号,或者让你自己接受SQL注射。

并且你总是想检查空游标,所以你也应该

if(cursor!=null&&cursor.moveToFirst()){}