私はSqliteの初心者なので、愚かな間違いを犯したらごめんなさい:D
定義済みデータベースで NULL エラーが発生しました。
このエラーは、新しいコンピューター/エミュレーターでアプリを起動すると常に発生するため、私の方法に関係があると思いますonCreate
。ただし、onCreate
定義済みのデータベースを使用しているため、必要ありません。
これは私のデータベースクラスです:
private static String DATABASE_NAME = "ALGOLICIOUS_DB";
private static int DATABASE_VERSION = 1;
private static String TABLE_NAME = "msQuiz";
private static String TABLE_HIGHSCORE = "msHighScore";
private Context context;
private SQLiteDatabase db;
String queryCreate, queryUpdate, queryDelete, querySelect, queryInsert;
Cursor cursor;
public AlgoliciousDB(Context context) {
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
}
public List<String> getQuestion(int chapter) {
List<String> questionList = new ArrayList<String>();
String result = "";
querySelect = "SELECT * FROM " + TABLE_NAME + " WHERE question_chapter = " + chapter;
try {
cursor = this.db.rawQuery(querySelect, null);
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
result += cursor.getString(1) + "%" + cursor.getString(2) + "%" + cursor.getString(3) + "%" + cursor.getString(4) + "%" + cursor.getString(5);
questionList.add(result);
result = "";
}
return questionList;
} catch (Exception e) {
return null;
}
}
public int getHighScore(int chapter) {
querySelect = "SELECT highscore FROM " + TABLE_HIGHSCORE + " WHERE highscore_id = " + chapter;
int temp = 0;
try {
cursor = this.db.rawQuery(querySelect, null);
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
temp = Integer.parseInt(cursor.getString(0));
}
return temp;
} catch (Exception e) {
return -1;
}
}
public void Close() {
db.close();
}
class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
どんな助けでも大歓迎です、ありがとう:D