在使用IBObjects操作Firebird数据库的时候:
TIBOQuery *IboSafe;
....
IboSafe->Edit();
IboSafe->FieldByName("WAY")->AsString = items;
IboSafe->Post();
结果报错:Cannot modify a read-only dataset, 调试发现执行Edit函数的时候就报此异常, 进入Edit函数发现TDataSet的CanModify属性为false, 所以才导致无法Edit, 但此属性是只读的, 无法直接修改. 看样子需要间接修改此属性, 后来发现需要设置 IboSafe->RequestLive = true; 这样CanModify才为true, 这就跟操作oracle的数据库工具plsql在界面上直接修改类似, 只有RequestLive才能在界面上直接修改! 直接AppendRecord也需要CanModify为true,例如:
IboQry->RequestLive = true;
TVarRec row[] = {user, password, purview, "", 0};
int value_size = IboQry->FieldCount - 1;
IboQry->AppendRecord(row, value_size);