mco_class_load
从外部文件加载整个类。
此函数用于加载先前保存的数据库类镜像。此操作会隐式启动一个事务,因此无需提供事务句柄。mco_class_save()
和 mco_class_load()
函数与 mco_db_save()
和 mco_db_load()
兼容。这意味着应用程序可以使用 mco_db_save()
保存整个数据库的快照,并在之后通过 mco_db_load()
加载或重新加载特定类的内容。或者,也可以使用 mco_class_save()
仅保存单个类的内容,然后利用该快照通过 mco_db_load()
创建数据库。
class_code
参数可以从 mcocomp 生成的文件中获取,或者设置为 0。当设置为 0 时,系统将自动从图像文件中确定 class_code
值。如果无法确定,则返回 MCO_E_ILLEGAL_PARAM
错误代码。
MCO_RET mco_class_load(
/*IN*/ uint2 class_code,
/*IN*/ void *stream_handle,
/*IN*/ mco_stream_read input_stream_reader,
/*IN*/ mco_db_h db
);
参数
class_code
uint2
整数类代码或0(见下面的说明)。
stream_handle
void *
输出流的句柄。
input_stream_reader
mco_stream_read
运行时调用的用于读取输入的处理函数。
db
mco_db_h
数据库句柄。
返回
MCO_S_OK
已成功保存数据库镜像。
MCO_E_NOINSTANCE
指定的数据库未打开。
示例
/* 应用程序代码片段 */
mco_size_sig_t file_reader( void *stream_handle /* FILE * */, /* OUT */void *to, mco_size_t max_nbytes )
{
FILE *f = (FILE *)stream_handle;
mco_size_sig_t nbs;
nbs = fread( to, 1, max_nbytes, f );
return nbs;
}
int main(int argc, char** argv)
{
MCO_RET rc;
sample_memory_t dbmem;
mco_db_h db;
mco_db_params_t db_params;
…
FILE * fbak;
uint2 my_class_code = 1;
…
rc = mco_class_load( my_class_code, (void *)fbak, file_reader, db );
fclose( fbak );
sample_rc_check( "\t Load class", rc );
if ( MCO_S_OK == rc )
{
/* 连接到数据库 */
rc = mco_db_connect( dbname, &db );
sample_rc_check( "\t Connect to database", rc );
}
}
文件
- 头文件:
mco.h
- 源文件:
mcosericmn.c
- 库:
libmcoseri.a