Android SQLite数据库空指针

用户名

我有一个SQLite帮助器类,试图将其添加到数据库中。这是课程:

public class QuestionsDBHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DATABASE_NAME = "triviaQuiz";
    // tasks table name
    private static final String TABLE_QUESTION = "question";
    // tasks Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_QUES = "question";
    private static final String KEY_ANSWER = "answer"; // correct option
    private static final String KEY_OPTA = "opta"; // option a
    private static final String KEY_OPTB = "optb"; // option b
    private static final String KEY_OPTC = "optc"; // option c
    private static final String KEY_OPTD = "optd"; // option c
    private SQLiteDatabase dbase;

    public QuestionsDBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        dbase = db;
        String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUESTION + " ( "
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES
                + " TEXT, " + KEY_ANSWER + " TEXT, " + KEY_OPTA + " TEXT, "
                + KEY_OPTB + " TEXT, " + KEY_OPTC + " TEXT, " + KEY_OPTD + " TEXT)";

        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTION);
        onCreate(db);
    }

    // Adding new question
    public void addQuestion(Question quest) {
        ContentValues values = new ContentValues();
        values.put(KEY_QUES, quest.getQUESTION());
        values.put(KEY_ANSWER, quest.getANSWER());
        values.put(KEY_OPTA, quest.getOPTA());
        values.put(KEY_OPTB, quest.getOPTB());
        values.put(KEY_OPTC, quest.getOPTC());
        values.put(KEY_OPTD, quest.getOPTD());

        // Inserting Row
        if(dbase == null) {
            System.out.println("DB null");
        }
        dbase.insert(TABLE_QUESTION, null, values);
    }

}

这是我在“活动”中使用它的方式:

QuestionsDBHelper db = new QuestionsDBHelper(this);
db.addQuestion(new Question("Question", "Option 1", "Option 2", "Option 3", "Option 4", "Answer"));

我在这行上得到一个空指针:

dbase.insert(TABLE_QUESTION, null, values);

我在做支票

if(dbase == null) {
    System.out.println("DB null");
}

结果发现Dabatase为空。但是在onCreate我眼中,dbase = db所以我不确定为什么它为空。有任何想法吗?谢谢

用户名

简而言之,因为onCreate并不总是被调用(仅在创建数据库时)。在使用dbase之前,应将dbase = getWriteableDatabase()放入构造函数或每个方法中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中查询SQLite数据库时出现Java空指针异常

来自分类Dev

Android中的数据库空指针异常

来自分类Dev

我的数据库上的Android空指针异常

来自分类Dev

如何从Android中的SQLite数据库获取空值

来自分类Dev

如何从Android中的SQLite数据库获取空值

来自分类Dev

向数据库发送纬度和经度时,Android空指针异常

来自分类Dev

从sqlite数据库android写入数据

来自分类Dev

IllegalArgumentException对于Android中的SQLite数据库,绑定值索引1为空

来自分类Dev

如何使用DatabaseConnector类在SQLite Android中检查数据库是否为空

来自分类Dev

Android SQLite MultiTable数据库开发

来自分类Dev

加密sqlite数据库Android:

来自分类Dev

Android从.csv插入sqlite数据库

来自分类Dev

Android SQLite数据库重新导入

来自分类Dev

遍历android sqlite数据库

来自分类Dev

数据库版本SQLite Android

来自分类Dev

恢复sqlite数据库android

来自分类Dev

查询“脱节”的Android sqlite数据库

来自分类Dev

使用SQLite的Android数据库错误

来自分类Dev

无法打开数据库android Sqlite

来自分类Dev

Android:SQLite插入数据库

来自分类Dev

在Android中升级SQLite数据库

来自分类Dev

无法查询Android SQLite数据库

来自分类Dev

android中的sqlite数据库错误

来自分类Dev

从SQLite数据库Android获取arraylist

来自分类Dev

通过android创建sqlite数据库

来自分类Dev

Android从SQLite数据库检索值

来自分类Dev

在Android中连接SQLite数据库

来自分类Dev

Android插入SQLite数据库

来自分类Dev

Android-升级SQLite数据库