如何在创建 table 之前检查数据库是否存在?
How to check if a database exists before creating a table?
如何在使用 sqflite
为 Flutter
中的数据库创建 table 之前检查数据库是否存在?
例如,如果我要创建数据库 doggie_database.db
,我如何在 table 创建过程中提前检查它是否存在?
final Future<Database> database = openDatabase(
// Set the path to the database.
join(await getDatabasesPath(), 'doggie_database.db'),
// When the database is first created, create a table to store dogs.
onCreate: (db, version) {
// Run the CREATE TABLE statement on the database.
return db.execute(
"CREATE TABLE dogs(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
);
},
// Set the version. This executes the onCreate function and provides a
// path to perform database upgrades and downgrades.
version: 1,
);
您可以使用databaseExists(String path)
检查数据库是否存在。
https://github.com/tekartik/sqflite/blob/master/sqflite/lib/sqflite.dart(第 174 行)
/// Check if a database exists at a given path.
///
Future<bool> databaseExists(String path) =>
databaseFactory.databaseExists(path);
但我认为您担心再次调用 CREATE TABLE
语句。如果您指定 version
,则不必担心这一点。在内部保留版本,如果已经指定,则不会调用 onCreate
。
来自同一文件:
/// If [version] is specified, [onCreate], [onUpgrade], and [onDowngrade] can
/// be called. These functions are mutually exclusive — only one of them can be
/// called depending on the context, although they can all be specified to
/// cover multiple scenarios
///
/// [onCreate] is called if the database did not exist prior to calling
/// [openDatabase]. You can use the opportunity to create the required tables
/// in the database according to your schema
如何在使用 sqflite
为 Flutter
中的数据库创建 table 之前检查数据库是否存在?
例如,如果我要创建数据库 doggie_database.db
,我如何在 table 创建过程中提前检查它是否存在?
final Future<Database> database = openDatabase(
// Set the path to the database.
join(await getDatabasesPath(), 'doggie_database.db'),
// When the database is first created, create a table to store dogs.
onCreate: (db, version) {
// Run the CREATE TABLE statement on the database.
return db.execute(
"CREATE TABLE dogs(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
);
},
// Set the version. This executes the onCreate function and provides a
// path to perform database upgrades and downgrades.
version: 1,
);
您可以使用databaseExists(String path)
检查数据库是否存在。
https://github.com/tekartik/sqflite/blob/master/sqflite/lib/sqflite.dart(第 174 行)
/// Check if a database exists at a given path.
///
Future<bool> databaseExists(String path) =>
databaseFactory.databaseExists(path);
但我认为您担心再次调用 CREATE TABLE
语句。如果您指定 version
,则不必担心这一点。在内部保留版本,如果已经指定,则不会调用 onCreate
。
来自同一文件:
/// If [version] is specified, [onCreate], [onUpgrade], and [onDowngrade] can
/// be called. These functions are mutually exclusive — only one of them can be
/// called depending on the context, although they can all be specified to
/// cover multiple scenarios
///
/// [onCreate] is called if the database did not exist prior to calling
/// [openDatabase]. You can use the opportunity to create the required tables
/// in the database according to your schema