iOS SQLite文件保存不会持久

时间:2015-05-13 15:15:17

标签: ios sqlite

我正在使用Xcode 6,Objective-C。我试图使用SQLite来存储我的数据。但我有一个问题,存储不是持久的。 当我启动我的程序时,我在我的dataBase文件中有这个:

  

id = 0;钱= 1000000; name = xx;

     

id = 1;钱= 500200; name = bb;

现在,当我在表格中插入新数据时,我会检查我有3行。但当我关闭我的应用程序并重新打开它时,我仍有2行。

这是一些代码,这是我的初始化函数:

- (id)init {
    self = [super init];

    if (self){

        [self CopyDbToDocumentsFolder];

        if (sqlite3_open([[[self GetDocumentDirectory] stringByAppendingPathComponent:@"Bank.sqlite"]  UTF8String],
                         &_database) != SQLITE_OK) {
            NSLog(@"Failed to open database!");
        }
    }
    return self;
}

这是我的插入功能:

-(void)insert:(NSString *)cols withValues:(NSString *)values into:(NSString *) table{

    NSString *query = [NSString stringWithFormat:@"INSERT INTO %@ (%@) VALUES(%@)", table, cols, values];
    sqlite3_stmt *statement;

    if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_DONE);
        sqlite3_finalize(statement);
    }else{
        NSLog(@"Failed to delete!");
        sqlite3_errmsg(_database);
    }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

[self CopyDbToDocumentsFolder];

每次启动该对象时,您似乎都在将数据库从软件包复制到文档目录。因此,当您再次启动应用程序时,您将覆盖您的数据库。

如果数据库尚未存在,您只想复制数据库。