mco_cursor_check
接口适用于实时数据库 RT 。
检查游标的内部结构。
如果游标的内部结构有效且所指向的索引未发生更改,则返回 MCO_S_OK
。游标在事务之间保持有效,因此应用程序需要判断在不同事务中重用当前游标时其有效性。
应用程序频繁调用 mco_w_obj_from_cursor()
是常见现象,因此该检查操作可能对性能产生显著影响。出于性能考虑,对象句柄有效性检查仅存在于运行时库的调试版本中,在发布版本中已被移除。
因此,在某些情况下,使用调试库时 mco_w_obj_from_cursor()
可能会返回 MCO_E_CURSOR_INVALID
,而使用发布版本时相同的函数调用可能会返回 MCO_S_OK
。因此,开发人员应谨慎处理所有游标函数的返回代码,并确保在使用调试库进行开发时消除任何 MCO_E_CURSOR_INVALID
的情况。
MCO_RET mco_cursor_check(
/*IN*/ mco_trans_h t,
/*IN*/ mco_cursor_h c
);
参数
t
mco_trans_h
由 mco_trans_start()
函数返回的 mco_trans_h
事务句柄。
c
mco_cursor_h
从游标或索引搜索函数返回的游标句柄。
返回
MCO_S_OK
游标有效。
MCO_E_INVALID_HANDLE
游标未打开。
MCO_E_CURSOR_INVALID
游标未定位到对象。
MCO_E_CURSOR_CLOSED
游标已关闭。
示例
/* 应用程序代码片段 */
const char * dbname = "SimpleDb";
int main(int argc, char* argv[])
{
mco_db_h db;
MCO_RET rc;
mco_device_t dev;
mco_db_params_t db_params;
mco_trans_h t;
mco_cursor_t c;
MCO_CURSOR_TYPE ctype;
...
rc = mco_db_open_dev( dbname, simple_get_dictionary(), &dev, 1, &db_params );
if ( MCO_S_OK != rc )
{
rc = mco_db_connect( dbname, &db );
...
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &t);
if ( MCO_S_OK == rc )
{
...
A_list_cursor( t, &c);
...
rc = mco_cursor_check( t, &c );
...
}
...
}
文件
- 头文件:
mco.h
- 源文件:
mcocsr.c
- 库:
libmcolib.a