【发布时间】:2020-06-29 05:22:30
【问题描述】:
我已经实现了检查数据库助手类中是否存在数据库的代码。这是我的 DatabaseHelper 类。
static final DatabaseHelper _instance = new DatabaseHelper.internal();
DatabaseHelper.internal();
factory DatabaseHelper() => _instance;
static Database _db;
static final table = 'User';
Future checkDb() async{
Directory documentDirectory = await getApplicationDocumentsDirectory();
//var db = await getDatabasesPath();
var dbPath = join(documentDirectory.path,"main.db");
bool exist = await databaseExists(dbPath);
return exist;
}
Future<Database> get db async{
if(_db!= null)
{
return _db;
}
_db = await initdb();
return _db;
}
initdb() async{
Directory documentDirectory = await getApplicationDocumentsDirectory();
String path = join(documentDirectory.path,"main.db");
var ourDb = await openDatabase(path,version:1,onCreate:_onCreate);
return ourDb;
}
void _onCreate(Database db,int version)async {
await db.execute("CREATE TABLE User("
"userId INTEGER PRIMARY KEY,"
"first_name TEXT,"
"last_name TEXT,"
"user_password TEXT,"
")");
print("User Table created");
}
void tableIsEmpty()async{
var db = await openDatabase('main.db');
int count = Sqflite
.firstIntValue(await db.rawQuery('SELECT COUNT(*) FROM User'));
print(count);
}
数据库成功创建,db.checkdb() 在我调用时返回 true
var db = new DatabaseHelper();
但是当我调用db.tableIsEmpty() 时,即使在执行 OnCreate 之后,我也会收到错误“no such table:User”?
我该如何解决问题或如何检查数据库中是否存在表?
【问题讨论】: