本文整理汇总了C++中row::add方法的典型用法代码示例。如果您正苦于以下问题:C++ row::add方法的具体用法?C++ row::add怎么用?C++ row::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类row
的用法示例。
在下文中一共展示了row::add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: edit_row
int table::edit_row(const row &old_row, row new_row) {
int count = 0;
// add column data that is not included to new_row (still enables writing empty values)
for (int i=0;i<_Tstruct.size();i++) {
if (!new_row.is_defined(new_row[_Tstruct[i].name])) new_row.add(_Tstruct[i], old_row[_Tstruct[i].name]);
}
if (old_row.id >= 0) {
_fdata->seek(old_row.id*_row_size);
_write_row(new_row._data);
count++;
// if old row's key value has changed then update the key entry (insde _keys)
if (old_row[_key.name] != new_row[_key.name]) {
for (int i=0;i<_keys.size();i++) {
if (_keys[i].row_id == old_row.id) {
_keys[i].data = new_row[_key.name]; // change key entry data to represent change
break;
}
}
}
}
else {
query q;
predicate p;
for (int i=0;i<_Tstruct.size();i++) p.And( equalto(_Tstruct[i], old_row[_Tstruct[i].name]) ); // build predicate matching the row
q.where(p);
vector<row> results = select(q);
for (int i=0;i<results.size();i++) {
_fdata->seek(results[i].id * _row_size);
_write_row(new_row._data);
count++;
// if old row's key value has changed then update the key entry (insde _keys)
if (old_row[_key.name] != new_row[_key.name]) {
for (int i=0;i<_keys.size();i++) {
if (_keys[i].row_id == results[i].id) {
_keys[i].data = new_row[_key.name]; // change key entry data to represent change
break;
}
}
}
}
}
return count;
}