deka
Dauergast
- 351
Ich habe eine Sqlite-Datenbank in meine Quiz-App eingebunden und verwende hier den Android Cursor. Dabei habe ich eine Datenbank-Klasse geschrieben in der ich u.a. die Tabellen- und Spaltennamen definiere, den Datenbanknamen etc..
Hier habe ich nun auch diverse Methoden um beispielsweise auf meine Fragen und Favoriten zuzugreifen.
Hier mal ein kleiner Ausschnitt:
Auf die Methoden zugreifen tue ich von meiner QuizActivity, in der ich drei Cursor definiert habe (answerCursor, questionCursor, userResultCursor).
Meine Frage ist: Ist es nötig, dass ich in jeder Methode ein neues SQLiteDatabase-Objekt erzeuge oder reicht es wenn ich das einmal im Konstruktor mache? Und benötige ich wirklich drei verschiedene Cursor oder gibt es da auch einen besseren Weg?
Hier habe ich nun auch diverse Methoden um beispielsweise auf meine Fragen und Favoriten zuzugreifen.
Hier mal ein kleiner Ausschnitt:
Code:
public Cursor getQuestionItems(int topic) {
SQLiteDatabase db = getReadableDatabase();
Cursor questionCursor = db.rawQuery("Select * FROM Question WHERE topic = " + topic, null);
questionCursor.moveToFirst();
return questionCursor;
}
public Cursor getFavoriteQuestions() {
SQLiteDatabase db = getReadableDatabase();
Cursor questionCursor = db.rawQuery("Select * FROM Question WHERE favorite = 1", null);
questionCursor.moveToFirst();
return questionCursor;
}
public Cursor getWrongQuestions() {
SQLiteDatabase db = getReadableDatabase();
Cursor questionCursor = db
.rawQuery("Select * FROM Result, Question WHERE Result.qid = Question._id AND correct = 0", null);
questionCursor.moveToFirst();
return questionCursor;
}
public Cursor getAnswerItems(String id) {
SQLiteDatabase db = getReadableDatabase();
Cursor answerCursor = db.rawQuery(
"Select * FROM Answer, Question WHERE Question._id = " + id + " AND Question._id = Answer.qid", null);
answerCursor.moveToFirst();
return answerCursor;
}
public Cursor getUserResults(String qid) {
SQLiteDatabase db = getReadableDatabase();
Cursor userResultsCursor = db.rawQuery("SELECT result FROM Result, Answer WHERE Result.qid = " + qid, null);
userResultsCursor.moveToFirst();
return userResultsCursor;
}
Auf die Methoden zugreifen tue ich von meiner QuizActivity, in der ich drei Cursor definiert habe (answerCursor, questionCursor, userResultCursor).
Meine Frage ist: Ist es nötig, dass ich in jeder Methode ein neues SQLiteDatabase-Objekt erzeuge oder reicht es wenn ich das einmal im Konstruktor mache? Und benötige ich wirklich drei verschiedene Cursor oder gibt es da auch einen besseren Weg?