更新db sqlite没有这样的表错误

时间:2018-04-05 11:06:49

标签: android sqlite

我创建的db有问题。它没有找到表" Journal" 我认为这是db问题的更新,因为我无法在创建脚本中看到任何问题。我正在使用真实设备而我不知道如何完全删除来自设备的db,因此它创建了db。我试图卸载应用程序,但没有任何改变。 这是代码和错误:

  

没有这样的表日记

RewriteEngine on

RewriteRule !index.php /index.php [L]

导致错误的原因:

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);
}

需要帮助才能刷数据并获得真正的数据库。感谢。

2 个答案:

答案 0 :(得分:0)

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

将包含多个CREATE TABLE语句的字符串拆分为单独的execSQL()个电话。

答案 1 :(得分:0)

使用此代码:

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