SQLite文件未在App Store版本中创建

时间:2013-12-24 11:01:42

标签: ios iphone sqlite

我已向AppStore提交了包含数据库更改的应用更新。新版本对数据库进行了大量更改,

  

使用新名称

创建新数据库      

添加到捆绑,

     

通过编码删除旧数据库,

     

通过编码

将新数据库添加到文档目录

在调试版本中运行良好。

将应用程序提交到应用程序商店并更新应用程序后,我发现无法从数据库访问数据。所以我删除了应用程序并从应用程序商店安装了最新的应用程序(这应该有新的数据库),但这也无法正常工作。然后我发现数据库根本没有创建。

我不知道使用新数据库的应用程序商店版本中发生了什么。为什么数据库根本没有创建?

这个奇怪的问题可能是什么原因?

非常感谢任何帮助。请以您可能知道的任何理由发布您的答案。这可能有助于我解决或至少知道这个问题。

提前致谢。

代码

- (void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"app.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) return;
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"app.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
    NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}}


-(void)getPasswordFromDb
{
sqlite3_stmt *statement;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"app.sqlite"];
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
     const char *sql = "SELECT emailAddress,password from AccountInformation;";
    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_ROW) {

                cEmail = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
                cPSW = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
            }
        }
    }
    sqlite3_finalize(statement);
} else {
    NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
}
}

0 个答案:

没有答案