我正在使用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);
}
}
感谢您的帮助。
答案 0 :(得分:2)
[self CopyDbToDocumentsFolder];
每次启动该对象时,您似乎都在将数据库从软件包复制到文档目录。因此,当您再次启动应用程序时,您将覆盖您的数据库。
如果数据库尚未存在,您只想复制数据库。