0

私はSqliteの初心者なので、愚かな間違いを犯したらごめんなさい:D

定義済みデータベースで NULL エラーが発生しました。

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

4

1 に答える 1

1

あなたの答えはここにあります: Android アプリケーションで既存のデータベースを使用する方法

データベースを Assets フォルダーにコピーし、上記のリンクで提供されているコードを使用します。サンプルサンプルもご用意しておりますので、お試しいただけます。

于 2012-12-09T14:48:00.290 に答える