关于Berkeley数据库的介绍,可以参考下面的文章:
http://www.eepw.com.cn/article/76954.htm
http://zh.wikipedia.org/w/index.php?title=Berkeley_DB&variant=zh-hans
使用Berkeley DB的一般步骤如下:
第一,创建数据库环境Environment
创建一个Environment环境,首先需要设置一个配置对象DatabaseConfig,用来配置一个数据库的环境,然后就可以创建Environment环境:
第二,打开数据库Database
首先需要在一个已经存在的Environment环境下考虑打开一个数据库;
打开数据库之前,也要创建一个DatabaseConfig配置对象,用来配置一个Database;
使用Environment环境来打开数据库Database。
在上面步骤中创建了env的基础上,打开数据库具体实现如下:
第三,操作数据库
Berkeley DB存储的是键值对形式的数据,其实类似于一个Map,无非是向数据库中添加key/value对,或者根据指定的key取出对应的value,这是最基础的。
还可以使用游标来遍历数据库中的记录。
第四,关闭数据库及其环境
关闭的顺序就是:先关闭数据库,然后关闭环境:
Berkeley DB实例
下面做了一个例子,实现了MyBerkeleyDB类,用来演示如何使用一个Berkeley DB:
写入数据
可以看到控制台上打印出:
开始向Berkeley DB中存入数据...
[myKey0:myValue0]
[myKey1:myValue1]
[myKey2:myValue2]
[myKey3:myValue3]
[myKey4:myValue4]
[myKey5:myValue5]
[myKey6:myValue6]
[myKey7:myValue7]
[myKey8:myValue8]
[myKey9:myValue9]
[myKey10:myValue10]
[myKey11:myValue11]
[myKey12:myValue12]
[myKey13:myValue13]
[myKey14:myValue14]
[myKey15:myValue15]
[myKey16:myValue16]
[myKey17:myValue17]
[myKey18:myValue18]
[myKey19:myValue19]
也就是,想数据库中插入了20个键值对。
读取数据
在此基础上,我们可以打开这个数据库,从其中取出想要的键值对,根据key来取出value,修改main方法:
打印出结果如下所示:
从Berkeley DB中取出数据...
[myKey0:myValue0]
从Berkeley DB中取出数据...
[myKey2:myValue2]
从Berkeley DB中取出数据...
[myKey4:myValue4]
从Berkeley DB中取出数据...
[myKey6:myValue6]
从Berkeley DB中取出数据...
[myKey8:myValue8]
从Berkeley DB中取出数据...
[myKey10:myValue10]
从Berkeley DB中取出数据...
[myKey12:myValue12]
从Berkeley DB中取出数据...
[myKey14:myValue14]
从Berkeley DB中取出数据...
[myKey16:myValue16]
从Berkeley DB中取出数据...
[myKey18:myValue18]
从Berkeley DB中取出数据...
[myKey20:null]
从Berkeley DB中取出数据...
[myKey22:null]
从Berkeley DB中取出数据...
[myKey24:null]
可以看到,我们只存储了[myKey0:myValue0]到[myKey19:myValue19],而打印出结果[myKey20:null]对应的value都为null,说明不存在指定的key。
删除数据
在上面的类中增加如下成员方法
用来删除指定的key及其对应的额value。
修改主函数,测试:
从Berkeley DB中取出数据...
[myKey0:null]
从Berkeley DB中取出数据...
[myKey1:myValue1]
从Berkeley DB中取出数据...
[myKey2:myValue2]
从Berkeley DB中取出数据...
[myKey3:myValue3]
可以看到,myKey0对应的myValue0为null,已经从数据库中删除了,其实该键值对已经不存在于该数据库中了。
修改数据
其实,就是重新写入存在的一个key及其修改该key对应的value,如下所示:
测试主函数:
转载于:http://hi.baidu.com/shirdrn/blog/item/28e1573948cffdf43b87ce6e.html