我有一个Parsed Json字符串,我想循环这些值并将它们插入我的FMDB Sqlite数据库。我一次只能在数据库中放一条记录。我想将所有记录都放在sqlite数据库中。
我知道我必须为此制作某种循环。
我想获取下面有多个值的解析后的json,并将其插入名为unitofMeasure和Name的列中。
所以我想创建一个循环,将多个id和多个名称插入到我的数据库的unitOfMeasureID列和Name列中。
目前我只能一次插入i记录。
UnitOfMeasureID To Use: 1
Name: kph
UnitOfMeasureID To Use: 2
Name: kpm
UnitOfMeasureID To Use: 3
Name: kpm
for (defineJsonDataLookUp in self.jsonLookup)
{
NSNumber* UnitOfMeasureID = [defineJsonDataLookUp objectForKey:@"unitOfMeasureID"];
NSLog(@"UnitOfMeasureID To Use: %@", UnitOfMeasureID);
NSNumber* Factor = [defineJsonDataLookUp objectForKey:@"Factor"];
NSLog(@"Factor To Use: %@", Factor);
NSArray* Name = [defineJsonDataLookUp objectForKey:@"Name"]; //for actual json response
NSLog(@"Name: %@", Name); //3
NSNumber* ParentID = [defineJsonDataLookUp objectForKey:@"ParentID"];
NSLog(@"ParentID: %@", ParentID);
}
if ([strResult isEqualToString:@"[]"])
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection!" message:@" Please connect to the Internet" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
else
{
for (defineJsonDataLookUp in self.jsonLookup)
{
NSNumber* UnitOfMeasureID = [defineJsonDataLookUp objectForKey:@"unitOfMeasureID"];
NSLog(@"UnitOfMeasureID To Use: %@", UnitOfMeasureID);
NSNumber* Factor = [defineJsonDataLookUp objectForKey:@"Factor"];
NSLog(@"Factor To Use: %@", Factor);
NSArray* Name = [defineJsonDataLookUp objectForKey:@"Name"]; //for actual json response
NSLog(@"Name: %@", Name); //3
NSNumber* ParentID = [defineJsonDataLookUp objectForKey:@"ParentID"];
NSLog(@"ParentID: %@", ParentID);
FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[db open];
[db executeUpdate:[NSString stringWithFormat:@"delete from unitofmeasure"]];
[db executeUpdate:@"INSERT INTO unitofmeasure (unitOfMeasureID,Factor,Name,ParentID) VALUES (?,?,?,?)",UnitOfMeasureID,Factor,Name,ParentID];
// [db executeUpdate:@"INSERT INTO unitofmeasure (unitOfMeasureID,Name) VALUES (?,?);",
// [self.defineJsonDataLookUp objectForKey:@"unitOfMeasureID"],[self.defineJsonDataLookUp objectForKey:@"Name"], nil];
FMResultSet *results = [db executeQuery:@"select * from unitofmeasure"];
while([results next]) {
NSString *Name = [results stringForColumn:@"Name"];
NSInteger ParentID = [results intForColumn:@"ParentID"];
NSLog(@"UdadfdadfddfFuckingser: %@ - %d",Name, ParentID);
}
[db close];
}
HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]];
HUD.mode = MBProgressHUDModeCustomView;
[HUD hide:YES afterDelay:0];
}
}
我的SQlite数据库看起来像这样,我想插入我的字典中的所有记录UnitOfMeasureID:1,名称:kph,UnitOfMeasureID:2,名称:kpm,UnitOfMeasureID:3,名称:kpm
此致
答案 0 :(得分:1)
你没有太多的事情继续下去。数据库的结构是什么?什么是主键?哪些是独特的钥匙? JSON数据是什么样的?有效吗?你想插入你认为你的东西吗?
但是,作为一般建议,你忽略了错误返回码。
[db executeUpdate:@"INSERT INTO unitofmeasure"];
应该:
if(! [db executeUpdate:@"INSERT INTO unitofmeasure"]) {
// handle error
}
执行更新会返回单个值BOOL。返回值 YES表示更新已成功执行,返回值为 NO表示遇到了一些错误。你可以调用 -lastErrorMessage和-lastErrorCode方法来检索更多信息
最后,我认为这是一个复制粘贴错误:
[db executeUpdate:[NSString stringWithFormat:@"delete from unitofmeasure"]];
[db executeUpdate:@"INSERT INTO unitofmeasure
第一行删除表中的所有行。第二行插入一行。