您的位置:首页 > 数据库

20(数据库函数库)

2016-04-25 16:03 183 查看

1 常用函数

#include "apue_db.h"
//打开数据库
DBHANDLE db_open(const char *pathname, int oflag, ... /* int mode */);
Returns: database handle if OK, NULL on error

//关闭数据库
void db_close(DBHANDLE db);

//当向数据库加入一条新的纪录时,必须指明此记录的键以及和此键相关联的数据。
int db_store(DBHANDLE db, const char *key, const char *data, int flag);
Returns: 0 if OK, nonzero on error (see following)
//参数key和data是由null结束的字符串。
//flag参数只能是DB_INSERT、DB_REPLACE、DB_STORE(加入或者替换,只要合适无论哪一种都可以)。

//通过提供key可以取记录
#include "apue_db.h"
char *db_fetch(DBHANDLE db, const char *key);
Returns: pointer to data if OK, NULL if record not found

//通过提供key可以删除记录
#include "apue_db.h"
int db_delete(DBHANDLE db, const char *key);
Returns: 0 if OK, 1 if record not found

//先调用db_rewind回滚到数据库的第一条记录,然后在每一次循环中调用db_nextrec顺序读每一条记录
void db_rewind(DBHANDLE db);
char *db_nextrec(DBHANDLE db, char *key);
Returns: pointer to data if OK, NULL on end of file
//db_nextrec不保证访问次序,只保证每条记录被恰好访问一次。


Figure 20.3. Create a database and write three records to it

#include "apue.h"
#include "apue_db.h"
#include <fcntl.h>
int main(void)
{
DBHANDLE    db;

if ((db = db_open("db4", O_RDWR | O_CREAT | O_TRUNC, FILE_MODE)) == NULL)
err_sys("db_open error");

if (db_store(db, "Alpha", "data1", DB_INSERT) != 0)
err_quit("db_store error for alpha");
if (db_store(db, "beta", "Data for beta", DB_INSERT) != 0)
err_quit("db_store error for beta");
if (db_store(db, "gamma", "record3", DB_INSERT) != 0)
err_quit("db_store error for gamma");

db_close(db);
exit(0);
}


2 集中式或非集中式

(1)集中式

由一个进程作为数据库管理者,所有的数据库访问工作由此进程完成。其他进程通过IPC机制与此中心进行联系

(2)非集中式

每个库独立申请并发控制(加锁),然后自己调用IO函数



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: