Как я могу создать таблицу в моей БД после удаления всех моих таблиц в базе данных? - PullRequest
0 голосов
/ 21 октября 2019

Я вижу свои таблицы в DB с этим запросом, ..

(SELECT name
FROM sqlite_master 
WHERE type ='table' AND name NOT LIKE 'sqlite_%';)

после (Удаление всей моей таблицы) Я не могу создать таблицу, ...

package com.ariaz.amirmkaa.litner002;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseManager extends SQLiteOpenHelper {

public DatabaseManager(Context context)
{
    super(context, "myDB", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

    String card_tbl = "CREATE TABLE \"cards_tbl\" (\n" +
            "\t\"id\"\tINTEGER NOT NULL,\n" +
            "\t\"questiontx\"\tTEXT NOT NULL,\n" +
            "\t\"questionpic\"\tBLOB,\n" +
            "\t\"solutiontx\"\tTEXT NOT NULL,\n" +
            "\t\"solutionpic\"\tBLOB,\n" +
            "\t\"days\"\tINTEGER NOT NULL,\n" +
            "\t\"bookid\"\tINTEGER NOT NULL,\n" +
            "\t FOREIGN KEY (bookid)\n" +
            "       REFERENCES book_tbl (bookid)\n" +
            ");";

    db.execSQL(card_tbl);
}

1 Ответ

0 голосов
/ 21 октября 2019

Я считаю, что ваша проблема в том, что метод onCreate запускается только при первом создании базы данных (т. Е. Если файл базы данных не существует), он не будет работать, пока база данных существует.

Удаление всех таблиц, извлеченных из sqlite_master, не удаляет базу данных, база данных как минимум будет иметь таблицу sqlite_master , которую нельзя удалить, поскольку она защищена.

Когда вы отбрасываете все таблицы, вы можете вызвать метод onCreate .

  • Обычно при разработке после внесения изменений в схему приложения вы либо удаляете данные приложения, либо удаляете приложение, это приводит к удалению базы данных и, таким образом, onCreate метод работает. При выполнении таких изменений после публикации приложения вы обычно используете версию базы данных (4-й параметр, переданный в super(context, "myDB", null, 1);) вместе с подходящим кодом миграции в методе opUpdate.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...