sqlite能够创建内存数据库,但可以在iPhone中完成吗?
这是sqlite中的文档状态 http://www.sqlite.org/inmemorydb.html
我试过,但失败了。它成功创建了数据库,但无法创建表。 以下是我的代码:
-(BOOL) open{
NSString *path = @"";
if(sqlite3_open([path UTF8String], &database_) == SQLITE_OK) {
//bFirstCreate_ = YES;
NSLog(@"open == YES");
[self createChannelsTable:database_];
return YES;
} else {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
return NO;
}
- (BOOL) createChannelsTable:(sqlite3*)db{
NSString *comment = [[NSString alloc] init];
comment = @"CREATE TABLE Temp(Name text, Address text}";
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(db, [comment UTF8String], -1, &statement, nil) != SQLITE_OK) {
NSLog(@"Error: failed to prepare statement:create channels table");
return NO;
}
int success = sqlite3_step(statement);
sqlite3_finalize(statement);
if ( success != SQLITE_DONE) {
NSLog(@"Error: failed to dehydrate:CREATE TABLE channels");
return NO;
}
NSLog(@"Create table 'channels' successed.");
return YES;
}
答案 0 :(得分:0)
您是否可能在SQL命令字符串中遗漏分号并错误地结束'}'而不是')'?
comment = @"CREATE TABLE Temp(Name text, Address text}";
在“地址文字}”之后需要一个分号,所以它变为:
comment = @"CREATE TABLE Temp(Name text, Address text);";
我认为你在创建NSString“comment”时也会出现内存泄漏。你初始化它然后你告诉注释指针在你使用assign语句时存储另一个字符串。
你可以这样做两步:
NSString *comment = [[NSString alloc] initWithString:@"CREATE TABLE Temp(Name text, Address text}";