我的問題是如何將獲取的JSON數組數據插入到sqlite數據庫中。 我已經提取了JSON數據,這是一個字典數組。將json數據保存到iOS中的sqlite數據庫中
我的代碼保存JSON結果如下:
-(BOOL) saveApiResults: (NSString *)tableName : (NSArray *)data
{
BOOL saveSuccess = NO;
@try {
const char *dbPath = [databasePath UTF8String];
if(sqlite3_open(dbPath,&database)==SQLITE_OK) {
sqlite3_exec(database, "BEGIN", 0, 0, 0);
//pass an array containing json dictionary to below line
NSDictionary *rowData=[data objectAtIndex:0];
NSArray *keyArray = [rowData allKeys];
NSLog(@"key array %@",keyArray);
NSString *[email protected]"INSERT INTO ";
insertSQL=[insertSQL stringByAppendingString:@"moodsdata"];
insertSQL=[insertSQL stringByAppendingString:@" VALUES("];
for(int j=0;j<[keyArray count];j++)
{
insertSQL=[insertSQL stringByAppendingString:@"?"];
if(j<[keyArray count]-1)
insertSQL=[insertSQL stringByAppendingString:@","];
}
insertSQL=[insertSQL stringByAppendingString:@");"];
NSLog(@"query : %@ ",insertSQL);
const char *sqlstatement = [insertSQL UTF8String];
sqlite3_stmt *compiledstatement;
if(sqlite3_prepare_v2(database,sqlstatement , -1, &compiledstatement, NULL)==SQLITE_OK) {
for (NSUInteger i = 0; i < [data count]; i++) {
NSDictionary *rowData=[data objectAtIndex:0];
for(int j=0;j<[keyArray count];j++) {
NSString *val = @"";
NSString *value=(NSString *)[rowData objectForKey:[keyArray objectAtIndex:j]];
if((value != nil) && (![value isEqual:[NSNull null]]))
val=[NSString stringWithFormat:@"%@",value];
NSLog(@"values %@",val);
sqlite3_bind_text(compiledstatement,j+1,[val UTF8String], -1, SQLITE_TRANSIENT);
}
if(sqlite3_step(compiledstatement) != SQLITE_DONE) {
NSLog(@"ERROR");
}
sqlite3_clear_bindings(compiledstatement);
sqlite3_reset(compiledstatement);
}
sqlite3_exec(database, "COMMIT", 0, 0, 0);
saveSuccess = YES;
NSLog(@"RESULTS SAVED SUCCESSFULLY!");
} else {
NSLog(@"StatemenT FAILED (%s)", sqlite3_errmsg(database));
}
sqlite3_finalize(compiledstatement);
} else {
NSLog(@"Statement FAILED (%s)", sqlite3_errmsg(database));
}
}
@catch (NSException *exception) {
NSLog(@"NSException : %@",exception.description);
}
@finally {
sqlite3_close(database);
}
return saveSuccess;
}
我的問題是,當我嘗試JSON數組傳遞給此方法只節約了第一個數組對象的值。即只有第一個字典值被保存。請告訴我我做錯了什麼。
請更新您的問題與您的問題相關的代碼。你試過什麼了?您問題中的代碼與您的問題無關。 – rmaddy
不相關,但你爲什麼要這樣構建CREATE語句?爲什麼它不是單個字符串?至少使用'NSMutableString'來逐個構建它。 – rmaddy
我已更新我的問題。請檢查一下。 –