- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Berkeley DB for c
Berkeley DB for C
简单介绍Brekeley DB
打开databases
在开打数据库前必须通过db_create()方法来初始化一个db句柄, 然后你可以通过他的open方法来打开一个数据库
?
示例:
#include db.h??//必要的包含文件
...
DB *dbp; /*?数据库结构句柄?*/
u_int32_t flags; /*?数据库打开标志?*/
int ret; /*?用来接收通过db_create来创建的数据库是否成功?*/
/*?初始化结构体
*?因为数据库没有在环境中打开
*?所以环境指针为null. */
ret = db_create(dbp, NULL, 0);
if (ret != 0) {
/*?错误处理?*/
}
/*?数据库打开标志?*/
flags = DB_CREATE; /*?如果数据库不存在的化则创建一个新的*/
/*?打开数据库?*/
ret = dbp-open(dbp, /*?数据库结构指针?*/
NULL, /*?事务处理指针?*/
my_db.db, /*?数据库名?*/
NULL, /* Optional logical database name */
DB_BTREE, /*?数据库访问方式?*/
flags, /*?打开标识?*/
0); /*?文件模式?(使用默认的) */
if (ret != 0) {
/*?错误处理?*/
}
关闭databases
一旦你使用完毕某个数据库,你必须通过DB-close()来关闭他。除非你再次打开他否则关闭后的数据库是不能在使用的。在关闭数据库之前请确保与之相关的游标先关闭,否则会有很多想不到的后果。关闭数据库后很多缓存在内存中的数据会被同步到你的硬盘中去,而且你也可以随时通过DB-sync()方法来随时同步数据库。
使用示例:
#include db.h
...
DB *dbp; /*?数据库句柄?*/
...
/*
*?在这里进行一些数据库有关的操作
*/
...
/*?当你不在使用他的时候关闭他. */
if (dbp != NULL)
dbp-close(dbp, 0);
?
数据库打开表识(flags)
如果在打开数据库的时候使用多个标识则可以通过按位或来添加多个标示
示例:
u_int32_t open_flags = DB_CREATE | DB_EXCL;
?
??????????标示说明:
DB_CREATE:当数据不存在的时候创建一个新的
DB_EXCL:创建专用数据库,如果数据库已经存在则将会打开失败,这个标识只能与DB_CREATE联合使用
DB_RDONLY:以只读方式打开数据库,所有的写操作都被禁止。
DB_TRUNCATE:打开数据库的同时清空数据库中原有的记录。
?
下面这些方法可能会对你管理数据库有用
??????????DB-get_open_flags():返回当前的数据库打开标识,如果在打开数据库前调用此方法会出错。
使用示例:
#include db.h
...
DB *dbp;
u_int32_t open_flags;
/* Database open and subsequent operations omitted for clarity */
dbp-get_open_flags(dbp, open_flags);
??????????DB-remove()
如果一个数据库已经不再需要,则可以使用这个方法来删除。
示例:
#include db.h
...
DB *dbp;
/* Database open and subsequent operations omitted for clarity */
dbp-remove(dbp, /*?数据库句柄?*/
mydb.db, /*?要移除的数据库?*/
NULL, /* Database to remove. This is
* NULL so the entire file is
* removed. */
0); /* Flags. None used. */
??????????DB-rename()
给目标数据库改名,不要试图给一个已经打开了的数据库改名,那样会出错的。
使用示例:
#include db.h
...
DB *dbp;
/* Database open and subsequent operations omitted for clarity */
dbp-rename(dbp, /* Database pointer */
mydb.db, /*?要被改名的数据库?*/
NULL, /* Database to rename. This is
* NULL so the e
文档评论(0)