【问题标题】:After modified sqflite table, application will be crashed修改 sqflite 表后,应用程序将崩溃
【发布时间】:2019-05-21 15:53:54
【问题描述】:

我在 sqflite 数据库中添加了一个新列。之后,更新应用程序时我无法使用我的应用程序。我应该卸载并重新安装。这种情况如何处理?

class HelperDatabase1 {
  static final HelperDatabase1 _instance = HelperDatabase1.internal();

  factory HelperDatabase1() => _instance;
  static Database _db;

  Future<Database> get db1 async {
    if (_db != null) return _db;
    _db = await initDb();
    return _db;
  }

  HelperDatabase1.internal();

  initDb() async {
    io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "HelperDatabase.db");
    var theDb = await openDatabase(path, version: 2, onCreate: _onCreate);
    return theDb;
  }

  void _onCreate(Database db, int version) async {
await db.execute("CREATE TABLE GetUserPreferenceTable(id INTEGER PRIMARY KEY AUTOINCREMENT, data INTEGER)");
}

在我的 main.dart 中

var helper;

void main() async {
  // debugPaintSizeEnabled=false;
  helper =
  await HelperDatabase1(); 

【问题讨论】:

    标签: dart flutter sqflite


    【解决方案1】:

    如果没有看到您的具体错误,您可能需要在 openDatabase() 方法中增加数据库的版本号以通知架构更改。

    例如,如果您使用类似于以下的代码来创建数据库,则可以将版本从 1 增加到 2:

    createDatabase() async {
      String databasesPath = await getDatabasesPath();
      String dbPath = join(databasesPath, 'my.db');
    
      var database = await openDatabase(dbPath, version: 2, onCreate: populateDb);
      return database;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多