Я работаю над запросом на обновление и использую библиотеку Билла Вайнмана для взаимодействия с базой данных sqlite, поэтому я хочу обновить базу данных, но нативный код обновляет только данные по идентификатору сценария, но я хочу обновить уважение еще на три значения, и яне могу понять, как я могу это сделать, пожалуйста, помогите мне.TNX много.
это метод, который вызывается объектом контроллера, затем проверяя значение, которым я управляю, вставляя и обновляя параметр
// Method to insert Scenario Product detail
- (void) insertScenarioProductAttribute: (NSMutableDictionary*) getRecord andOldProductAttribute:(NSDictionary*) oldRecord {
// NSLog(@"%s", __FUNCTION__);
self.tableName = ktnt_scenarioproductTableName;
NSNumber* _checkScenarioid = [self valueFromQuery:@"select scenarioid from tnt_scenarioproduct WHERE scenarioid = ? AND weekvalue = ? AND productid = ?",
[oldRecord objectForKey:@"scenarioid"], [oldRecord objectForKey:@"weekvalue"], [oldRecord objectForKey:@"productid"]];
if (_checkScenarioid) {
[self updateRow:getRecord :_checkScenarioid];
} else {
[self insertRow:getRecord]; // indicate that it's a new row
}
}
, затем этим методом я обновляю данные, но это было записано только с использованиемодно значение «идентификатор сценария», но в этом случае все мои данные обновляются, чего я не хочу
- (void) updateRow:(NSDictionary *) record:(NSNumber *) rowID {
// NSLog(@"%s", __FUNCTION__);
int dictSize = [record count];
// the values array is used as the argument list for bindSQL
id keys[dictSize]; // not used, just a side-effect of getObjects:andKeys
id values[dictSize + 1];
[record getObjects:values andKeys:keys]; // convenient for the C array
values[dictSize] = rowID;
NSString * query = [NSString stringWithFormat:@"update %@ set %@ = ? where scenarioid = ?",
tableName,
[[record allKeys] componentsJoinedByString:@" = ?, "]];
[self bindSQL:[query UTF8String] arguments:(va_list)values];
sqlite3_step(statement);
sqlite3_finalize(statement);
}