gpt4 book ai didi

iphone - iOS 中的 SQLite 插入错误

转载 作者:行者123 更新时间:2023-11-28 19:24:29 24 4
gpt4 key购买 nike

我正在尝试使用 SQLite 执行插入语句,我确定我一定在做一些愚蠢的事情,但我不知道如何让它工作。

我收到的错误是:“错误准备语句”

这是我的代码:

NSString *json_string = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];

// Create new SBJSON parser object
SBJsonParser *parser = [[SBJsonParser alloc] init];

// parse the JSON response into an object
NSDictionary *download = [parser objectWithString:json_string error:nil];
NSDictionary *buildings = [download objectForKey:@"buildings"];

// Open DB
sqlite3 *db = [RLSampleAppDelegate getNewDBConnection];

// Buildings
for (NSDictionary *building in buildings)
{
NSDictionary *thisbuilding = [building objectForKey:@"building"];
NSLog(@"%@", [thisbuilding objectForKey:@"buildingname"]);
sqlite3_stmt *statement = nil;
NSString* someString = [NSString stringWithFormat:@"INSERT INTO building (buildingid, buildingname) VALUES (\'%@\', \'%@\')", [thisbuilding objectForKey:@"buildingid"], [thisbuilding objectForKey:@"buildingname"]];

NSLog(@"somestring: %@", someString);
const char *sql = (const char *) someString;
if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL)!=SQLITE_OK)
NSAssert1(0,@"Error preparing statement",sqlite3_errmsg(db));

while(sqlite3_step(statement) == SQLITE_DONE){}

sqlite3_finalize(statement);
}

[json_string release];

最佳答案

您不能在 SQLite3 API 中使用 NSString 实例。您需要一个纯 C 字符串。

所以,尝试改变这个:

const char *sql = (const char *) someString;

进入:

const char *sql = [someString cStringUsingEncoding:[NSString defaultCStringEncoding]];

关于iphone - iOS 中的 SQLite 插入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com