Adding data using inspection Dictionary
This is a park inspection app. So ParkID,Inspection ID,Parkitem all are related to park. All are string and integer
+ for (NSDictionary *inspectionDictionary in dictionary[@"inspection"])
{
Inspection *inspection = [[Inspection alloc]
initWithDictionary:inspectionDictionary];
inspection.parkID = [dictionary[@"parkid"] integerValue];
[[Model sharedModel].dbHelper insertOrUpdateInspection:inspection];
}
Checking insert or update
+ (BOOL)insertOrUpdateParkItem:(ParkItem *)parkItem
{
if ([self parkItemExists:parkItem.itemID withParkId:parkItem.parkID
andInspectionId:parkItem.inspectionID])
{
return [self updateParkItem:parkItem];
}
else
{
return [self insertParkItem:parkItem];
}
}
Adding data using inspection Dictionary
+ (BOOL)inspectionExists:(NSInteger)inspectionId inPark:(NSInteger)parkId
{
int count = 0;
sqlite3 *database;
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
NSString *query = [NSString stringWithFormat:@"SELECT COUNT(*) FROM inspection WHERE park_id = %ld AND inspection_id = %ld", (long)parkId, (long)inspectionId];
const char* sqlStatement = (const char*)[query UTF8String];
sqlite3_stmt *statement;
if( sqlite3_prepare_v2(database, sqlStatement, -1, &statement, NULL) == SQLITE_OK )
{
while( sqlite3_step(statement) == SQLITE_ROW )
{
count = sqlite3_column_int(statement, 0);
} }
else
{
return NO;
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
if (count > 0) {
return YES;
}
return NO;
}
Inserting to sqlite database
+ (BOOL)insertParkItem:(ParkItem *)parkItem
{
sqlite3 *database;
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
NSString *query = [NSString stringWithFormat:@"INSERT INTO
park_item (item_id, park_id,inspection_id,
item_name) VALUES (%ld, %ld,%ld, '%@')",
(long)parkItem.itemID, (long)parkItem.parkID,
(long)parkItem.inspectionID,parkItem.itemName];
const char* sqlStatement = (const char*)[query UTF8String];
char *errmsg = nil;
if(sqlite3_exec(database, sqlStatement, NULL, NULL, &errmsg)==SQLITE_OK)
{
sqlite3_close(database);
return YES;
}
else
{
return NO;
}
}
return NO;
}
Updating to sqlite database
- (BOOL)updateParkItem:(ParkItem *)parkItem
{
sqlite3 *database;
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
NSString *query = [NSString stringWithFormat:@"UPDATE park_item SET
item_name= '%@' WHERE item_id = %ld AND park_id=%ld AND
inspection_id=%ld", parkItem.itemName,
(long)parkItem.itemID, (long)parkItem.parkID,
(long)parkItem.inspectionID];
const char* sqlStatement = (const char*)[query UTF8String];
char *errmsg = nil;
if(sqlite3_exec(database, sqlStatement, NULL, NULL, &errmsg)==SQLITE_OK)
{
sqlite3_close(database);
return YES;
}
else
{
return NO;
}
}
return NO;
}
In android there is facility to add data as an array. They are not using Query to add data in sqlite
So there is anything like that in iOS.. Please Help...