|
|
发表于 2006-6-18 18:30:58
|
显示全部楼层
//程序代码如下:
/*编译的时候要用-L 参数指定你的libdb.so和libdb.a的位置,并且db.h的头文件的位置也需要用-i参数指定.这个和你的系统和安装Berkeley DB的位置不同而不同.
例如我的编译参数,我用的是Berkeley DB 4.4并且安装在/usr/local/BerkeleyDB.4.4目录下:
gcc -o ReadBDB -l db ReadBDB.c -I /usr/local/BerkeleyDB.4.4/include/ -L /usr/local/BerkeleyDB.4.4/lib
*/
#include <stdio.h>
#include <db.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
DB* dbp;
DBT key, data;
int ret;
DBC* cur;
if (argc<1)
{
printf("Usage: ReadBDB <db's filename>\n");
exit (1);
}
if (argc>=1)
{
if (argv[1]==0) //to judge argv[1] NULL
{
printf("Usage: ReadBDB <db's filename>\n");
exit (1);
}
}
if ((ret=db_create(&dbp, NULL, 0))!=0)
{
dbp->err(dbp, ret, argv[1]);
exit(1);
}
if ((ret=dbp->open(dbp, NULL, argv[1], NULL, DB_BTREE, DB_RDONLY, 0664))!=0)
{
dbp->err(dbp,ret, argv[1]);
exit(1);
}
dbp->cursor(dbp, NULL, &cur, 0);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
while ((ret=cur->c_get(cur, &key, &data, DB_NEXT))==0)
{
printf("%s:%s\n", (char*)key.data, (char*)data.data);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
}
cur->c_close(cur);
dbp->close(dbp, 0);
} |
|