更新DB SQLITE没有此类表错误



我对创建的DB有问题。它找不到表"日记"我认为这是DB问题的更新,我在Create Script中看不到任何问题。我试图卸载该应用程序,但没有任何改变。这是代码和错误:

没有这样的桌子日记

private static final String CREATE_BDD = "CREATE TABLE  " + TABLE_CONTACTBL + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_NOM + " TEXT NOT NULL, "
            + COL_NUM + " TEXT NOT NULL, " + COL_NUM_RECH + " TEXT NOT NULL, " + COL_PREFIX +" TEXT NOT NULL);"
            + "CREATE TABLE  " + TABLE_JOURNAL + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_CONTACT + " TEXT NOT NULL, "
            + COL_DATE + " INTEGER NOT NULL, " + COL_TYPE + " TEXT NOT NULL);"
            + "CREATE TABLE  " + TABLE_GROUPES + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_NOM + " TEXT NOT NULL);"
            + "CREATE TABLE  " + TABLE_FAVORITES + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_ID_MSG + " INTEGER);"
            + "CREATE TABLE  " + TABLE_CONTACTWL + " ("
            + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_NOM + " TEXT NOT NULL, "
            + COL_GROUPE + " INTEGER, "+ COL_NUM +" TEXT NOT NULL);";
@Override
public void onCreate(SQLiteDatabase db) {
    //on crée la table à partir de la requête écrite dans la variable CREATE_BDD
    db.execSQL(CREATE_BDD);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    //On peut faire ce qu'on veut ici moi j'ai décidé de supprimer la table et de la recréer
    //comme ça lorsque je change la version les id repartent de 0
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTBL + ";");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_JOURNAL + ";");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_GROUPES + ";");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTWL + ";");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES + ";");
    onCreate(db);
}

是什么导致错误:

try {
    journalList = notificationsDAO.getAllNotifications();
} catch (SQLiteException e){
    errorMessage=e.getMessage();
    notificationsDAO.close();
    return false;
}
public ArrayList<NotificationJournal> getAllNotifications(){
    //Récupère dans un Cursor les valeurs correspondant à un livre contenu dans la BDD (ici on sélectionne le livre grâce à son titre)
    Cursor c = bdd.query(TABLE_JOURNAL,new String[]{"*"},null, null, null, null, null);
    return cursorToList(c);
}

需要帮助来刷数据并拥有我的真实数据库。谢谢。

您可以使用execSQL()执行单个SQL语句。第一个;之后的任何内容均未执行。

将包含多个CREATE TABLE语句的字符串分开为单独的execSQL()调用。

使用此代码:

@Override
public synchronized void onCreate(SQLiteDatabase db) {
    String sqls[] = CREATE_BDD.split(";");
    for (String sql : sqls)
        db.execSQL(CREATE_BDD);
}

最新更新