我需要读取我的iPad上的本地sqlite文件,我不需要查询如何打开它,一些起点。我从FTP服务器下载了该文件,它位于我的应用程序中。
答案 0 :(得分:1)
打开和关闭SQLite数据库并不难。您只需按照以下几个步骤操作:
第1步 - 将数据库中的数据库复制到应用程序的文档文件夹中。
您不想修改数据库的捆绑版本,您希望使用此设备的特定实例。
//*******************************************
- (void)copyDatabaseToDocumentsFolder {
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *localDatabase = [documentsPath stringByAppendingPathComponent: @"YourDatabaseFileName.sql"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath: localDatabase];
if (fileExists == NO) {
NSError *err;
// Get the path to the database in the application package
NSString *databaseInAppBundle = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @"YourDatabaseFileName.sql"];
// Copy the file from the package to the users filesystem
if (![[NSFileManager defaultManager] copyItemAtPath: databaseInAppBundle toPath: localDatabase error: &err]) {
NSLog(@"Database copy failed: %@", [err description]);
}
}
}
第2步: - 为数据库创建iVar。
@interface YourClass () {
sqlite3 *localDB;
}
@end
第3步 - 根据需要打开和关闭。
//*******************************************
- (void)closeDatabase {
if (localDB != nil) {
sqlite3_close(localDB);
localDB = nil;
}
}
//*******************************************
- (void)openDatabase {
if (localDB == nil) {
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
char *dbpath = (char *)[[documentsPath stringByAppendingPathComponent: @"YourDatabaseFileName.sql"] UTF8String];
sqlite3_open(dbpath, &localDB);
}
}