读取本地sqlite文件

时间:2014-11-19 15:04:05

标签: ios objective-c sqlite

我需要读取我的iPad上的本地sqlite文件,我不需要查询如何打开它,一些起点。我从FTP服务器下载了该文件,它位于我的应用程序中。

1 个答案:

答案 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);
    }
}