mardi 11 août 2015

Android Database GetObjects() (DatabaseHelper & QueryBuilder)

Can anyone tell me if the following code is "good"

    public MyAnime getMyAnimeByID(int ID) {
    SQLiteDatabase db = this.getReadableDatabase();
    MyAnime myAnime = new MyAnime();
    Cursor cursor = db.query("myAnime", new String[] { "id", "name",
            "description", "episodes", "genre", "rating",
            "episodesWatched", "stateId" }, "id = ?",
            new String[] { String.valueOf(ID) }, null, null, null);
    if (cursor.moveToFirst()) {
        myAnime = new MyAnime(cursor.getInt(0), cursor.getString(1),
                cursor.getString(2), cursor.getInt(3), cursor.getString(4),
                cursor.getInt(5), cursor.getInt(6), cursor.getInt(7));
    }
    cursor.close();
    db.close();
    return myAnime;
}

public List<MyAnime> getMyAnimes() {
    List<MyAnime> myAnimeList = new ArrayList<MyAnime>();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query("myAnime", new String[] { "id", "name",
            "description", "episodes", "genre", "rating",
            "episodesWatched", "stateId" },
            "stateId = ?", new String[] { String.valueOf(1) }, null, null,
            null);
    if (cursor.moveToFirst()) {
        do {                
            myAnimeList.add(getMyAnimeByID(cursor.getInt(0)));
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return myAnimeList;
}

Or should I create each object with the class constructor in the GetMyAnimes() method?

    public List<MyAnime> getMyAnimes() {
    List<MyAnime> myAnimeList = new ArrayList<MyAnime>();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query("myAnime", new String[] { "id", "name",
            "description", "episodes", "genre", "rating",
            "episodesWatched", "stateId" }, "stateId = ?",
            new String[] { String.valueOf(1) }, null, null, null);
    if (cursor.moveToFirst()) {
        do {
            // myAnimeList.add(getMyAnimeByID(cursor.getInt(0)));
            MyAnime myAnime = new MyAnime(cursor.getInt(0),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getInt(3), cursor.getString(4),
                    cursor.getInt(5), cursor.getInt(6), cursor.getInt(7));
            myAnimeList.add(myAnime);
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return myAnimeList;
}

I've always wondered but I prefer to use the first method because it avoids errors and makes for simpler more readable code.

Aucun commentaire:

Enregistrer un commentaire