IPhone-创建内存中数据库
sqlite能够创建内存中的数据库,但它可以在iPhone中完成吗 这是sqlite中的文档状态 我试过了,但失败了。它成功地创建了数据库,但未能创建表。 下面是我的代码:IPhone-创建内存中数据库,iphone,database,sqlite,in-memory,Iphone,Database,Sqlite,In Memory,sqlite能够创建内存中的数据库,但它可以在iPhone中完成吗 这是sqlite中的文档状态 我试过了,但失败了。它成功地创建了数据库,但未能创建表。 下面是我的代码: -(BOOL) open{ NSString *path = @""; if(sqlite3_open([path UTF8String], &database_) == SQLITE_OK) { //bFirstCreate_ = YES; NSLog(@"ope
-(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;
}
您是否可能在SQL命令字符串中缺少分号,并且结尾“}”而不是“')”错误 在“Address text}”之后需要一个分号,因此它变成:
comment = @"CREATE TABLE Temp(Name text, Address text);";
我认为在创建NSString“comment”时也会出现内存泄漏。初始化它,然后在使用assign语句时告诉注释指针存储另一个字符串
您可以在1中执行这两个步骤,如下所示:
NSString *comment = [[NSString alloc] initWithString:@"CREATE TABLE Temp(Name text, Address text}";
NSString *comment = [[NSString alloc] initWithString:@"CREATE TABLE Temp(Name text, Address text}";