mco_db_open
接口适用于实时数据库 RT 。
此函数在 SmartEDB 4.0 及更高版本中已弃用。
为保持与为 SmartEDB 运行时的早期版本编写的仅内存数据库应用程序的向后兼容性,得以保留。对于使用 SmartEDB 4.0 及更高版本的应用程序,推荐的数据库打开 API 是 mco_db_open_dev()
。
此函数在由 mem
引用的空间中创建名为 dbname
的数据库,初始大小为 total_size
,页面大小为 page_size
。
MCO_RET mco_db_open(
/*IN*/ const char * dbname,
/*IN*/ mco_dictionary_h dict,
/*IN*/ void * mem,
/*IN*/ uint4 total_size,
/*IN*/ uint2 page_size
);
参数
dbname
const char *
要打开的数据库名称。从declare database dbname
”DDL 语句中获取。数据库名称的最大长度为 16 个字符。
dict
mco_dictionary_h
由模式编译器 mcocomp 创建的字典的句柄。通常,此句柄由 dbname_get_dictionary() 传递进来。
mem
void *
分配给数据库的堆内存
total_size
uint4
内存所指向的内存量,以字节为单位
page_size
uint2
页管理器将管理的内存离散块的大小
返回
MCO_S_OK
已成功创建数据库。
MCO_E_PAGESIZE
页面大小非法。
MCO_E_NOMEM
分配的内存不足。
MCO_E_INSTANCE_DUPLICATE
重复的数据库实例。
MCO_ERR_DB_VERS_MISMATCH
SmartEDB 版本不匹配。
MCO_ERR_DB_NOMEM
数据库操作的内存不足。
MCO_ERR_DB_NAMELONG
数据库名称长度超过 16 个字符。
示例
/* 应用程序代码片段 */
const char * dbname = "SimpleDb";
int main(int argc, char* argv[])
{
mco_db_h db;
MCO_RET rc;
char *mem = malloc( DBSIZE );
if( (rc = mco_runtime_start()) != MCO_S_OK)
exit(-1);
rc = mco_db_open( dbname, simpledb_get_dictionary(), mem, DBSIZE, (uint2)PAGESIZE );
...
}
文件
- 头文件:
mco.h
- 源文件:
mcodb.c
- 库:
libmcolib.a