一.步骤拆解
1.数据库环境变量配置
2.数据库CRUD操作
3.数据库关闭
1.数据库环境变量配置
/**
* 初始化数据库参数
*/
// 数据库所在的存储文件夹
String dbEnvFilePath = "bdb";
// 数据库名称
String database = "weibo";
// 环境变量的声明
Environment myDbEnvironment = null;
// 数据库操作的对象声明
Database weiboDatabase = null;
try {
// 初始化数据存储根目录文件夹
File f = new File(dbEnvFilePath);
if (!f.exists()) {
f.mkdirs();
}
// 数据库配置变量初始化
DatabaseConfig dbConfig = new DatabaseConfig();// 打开数据库
dbConfig.setAllowCreate(true);
// 初始化环境配置变量,基于该变量去配置环境变量
EnvironmentConfig envConfig = new EnvironmentConfig();
// 当使用的数据库配置变量不存在的时候,就自动创建
envConfig.setAllowCreate(true);
// 正式初始化数据库的环境
myDbEnvironment = new Environment(f, envConfig);
// 打开一个数据库,如果不存在,则自动创建
weiboDatabase = myDbEnvironment.openDatabase(null, database,
dbConfig);
} catch (Exception e) {
e.printStackTrace();
}
2.数据库CRUD操作
2.1.数据库创建
weiboDatabase = myDbEnvironment.openDatabase(null, database,dbConfig);
2.2.数据库增加、修改操作
// 存储数据
// 数据的key
String aKey = "key1";
// 数据的value
String aData = "data";
try {
// 将key和value都封装到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry(aData.getBytes("UTF-8"));
// 写入数据库
weiboDatabase.put(null, theKey, theData);
// 对该库进行count操作,查看有多少条数据
System.out.println(weiboDatabase.count());
} catch (Exception e) {
e.printStackTrace();
}
2.3.数据读取操作
// 读取数据
//要读取数据的key
aKey = "key1";
try {
//将读取数据的key封装到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
//将读取出来的值以二进制形式放到DatabaseEntry中
DatabaseEntry theData = new DatabaseEntry();
//执行读取操作
weiboDatabase.get(null, theKey, theData, LockMode.DEFAULT);
//将二进制数据转化成字符串值
String result =new String(theData.getData(), "utf-8");
//打印之
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
2.4.数据删除操作
// 删除数据
//要删除的数据的key
aKey = "key1";
try {
//将要删除数据的key封装到DatabaseEntry中
DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
//执行删除操作
weiboDatabase.delete(null, theKey);
//查看数据库当前的记录数
System.out.println(weiboDatabase.count());
} catch (Exception e) {
e.printStackTrace();
}
2.5.数据库关闭
// 关闭
try {
//先关闭数据库
if (weiboDatabase != null) {
weiboDatabase.close();
}
//再关闭BDB系统环境变量
if (myDbEnvironment != null) {
myDbEnvironment.sync();
myDbEnvironment.cleanLog(); // 在关闭环境前清理下日志
myDbEnvironment.close();
}
} catch (Exception e) {
e.printStackTrace();
}