我在我的 iOS 项目中使用 sqlite3。登录/注销时我想重新创建整个数据库。(我可以“从表中删除”;但是有大约 10 个表,当我需要更多表时,我也必须小心编写删除代码)所以我搜索删除数据库;但我发现它不能用查询来完成。据说我必须从文件系统中删除它;我的代码是;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *dbPathDB=[appDelegate getDBPath];//dbname.sqlite
//to remove the db
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"dbname.sqlite"];
//both of them works same if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
if(filePath){
NSLog(@"it is removed now");
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
}
//recreating the db
if (sqlite3_open([dbPathDB UTF8String], &database) == SQLITE_OK) {
NSLog(@"db is created");
}
当我在设备上尝试时,当我第一次登录时(还没有删除数据库)一切正常,当我注销并再次登录时,我收到有关插入数据的错误(但它可以连接到数据库,这部分工作,错误是关于再次插入同一行)。
我停止设备并再次运行它并登录我没有插入错误,因为数据库是干净的。看起来数据库文件已删除但数据库在缓存中或类似的东西?如何删除并创建相同的数据库,然后插入数据而不会出错?