package demos.bdb;
import java.io.File;
import com.sleepycat.je.Cursor;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.TransactionConfig;
/*
* 数据库操作类
*/
public class BDB {
private static Database bdb; // 数据源
private static Environment exampleEnv;// 环境对象
private static boolean isrunning = false;// 判断是否运行
/**
* 打开数据库方法
*/
public static void start(String path) {
if (isrunning) {
return;
}
/******************** 文件处理 ***********************/
File envDir = new File(path);// 操作文件
if (!envDir.exists())// 判断文件路径是否存在,不存在则创建
{
envDir.mkdir();// 创建
}
/******************** 环境配置 ***********************/
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setTransactional(false); // 不进行事务处理
envConfig.setAllowCreate(true); // 如果不存在则创建一个
exampleEnv = new Environment(envDir, envConfig);// 通过路径,设置属性进行创建
/******************* 创建适配器对象 ******************/
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setTransactional(false); // 不进行事务处理
dbConfig.setAllowCreate(true);// 如果不存在则创建一个
dbConfig.setSortedDuplicates(true);// 数据分类
bdb = exampleEnv.openDatabase(null, "simpleDb", dbConfig); // 使用适配器打开数据库
isrunning = true; // 设定是否运行
}
/**
* 关闭数据库方法
*/
public static void stop() {
if (isrunning) {
isrunning = false;
bdb.close();
exampleEnv.close();
}
}
public static boolean isrunning() {
return isrunning;
}
/**
* 数据存储方法 set(Here describes this method function with a few words)
*
* TODO(Here describes this method to be suitable the condition - to be
* possible to elect)
*
* @param key
* @param data
*
* void
*/
public static void set(byte[] key, byte[] data) {
DatabaseEntry keyEntry = new DatabaseEntry();
DatabaseEntry dataEntry = new DatabaseEntry();
keyEntry.setData(key); // 存储数据
dataEntry.setData(data);
OperationStatus status = bdb.put(null, keyEntry, dataEntry);// 持久化数据
if (status != OperationStatus.SUCCESS) {
throw new RuntimeException("Data insertion got status " + status);
}
}
/*
* 执行获取,根据key值获取
*/
public static void selectByKey(String aKey) {
DatabaseEntry theKey =null;
DatabaseEntry theData = new DatabaseEntry();
try {
theKey = new DatabaseEntry(aKey.getBytes("utf-8"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (bdb.get(null,theKey, theData,
LockMode.DEFAULT) == OperationStatus.SUCCESS) { //根据key值,进行数据查询
// Recreate the data String.
byte[] retData = theData.getData();
String foundData = new String(retData);
System.out.println("For key: '" + aKey + "' found data: '"
+ foundData + "'.");
}
}
/**
* 查询所有,可遍历数据
* selectAll(Here describes this method function with a few words)
*
* TODO(Here describes this method to be suitable the condition - to be possible to elect)
*
*
* void
*/
public static void selectAll() {
Cursor cursor = null;
cursor=bdb.openCursor(null, null);
DatabaseEntry theKey=null;
DatabaseEntry theData=null;
theKey = new DatabaseEntry();
theData = new DatabaseEntry();
while (cursor.getNext(theKey, theData, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
System.out.println(new String(theData.getData()));
}
cursor.close();
}
/**
* 删除方法
* delete(Here describes this method function with a few words)
*
* TODO(Here describes this method to be suitable the condition - to be possible to elect)
*
* @param key
*
* void
*/
public static void delete(String key) {
DatabaseEntry keyEntry =null;
try {
keyEntry = new DatabaseEntry(key.getBytes("utf-8"));
} catch (Exception e) {
e.printStackTrace();
}
bdb.delete(null, keyEntry);
}
}
分享到:
相关推荐
- **BerkeleyDB-Core-C-GSG.pdf**:这可能是“Core C编程指南”,详细介绍了如何使用C语言接口来操作BDB数据库,包括基本操作、事务处理、多线程编程等方面的内容。 - **BDB_Prog_Reference.pdf**:可能是“BDB程序...
1. **BDB-C_APIReference.pdf**:这是BerkeleyDB C API的参考手册,详细介绍如何使用C语言接口来操作数据库,包括数据库的创建、打开、关闭、读写、事务处理等基本操作。 2. **BerkeleyDB-Core-C-Txn.pdf**:该文档...
这份手册详细介绍了 `memcachedb` 的安装、配置、使用以及维护等各个方面,旨在帮助用户更好地理解和操作这个工具。 1. **系统需求与安装** - `memcachedb` 需要在支持 `memcached` 的操作系统上运行,如 Linux、...
- **API 介绍**:介绍一种新的 Java 接口,用于操作 Berkeley DB 数据库。 - **20.9 如何操作 Berkeley DB 的 Records** - **记录操作**:讲解如何使用各种 API 对记录进行增删改查等操作。 #### 21. 嵌入式...
MySQL 4.1.0中文参考手册是一本全面介绍MySQL数据库系统的资源,特别适合中文使用者。MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),以其高效、稳定和易用而受到开发者和企业的青睐。4.1.0版本在MySQL的...
- **定义与作用**:游标是Berkeley DB提供的一种高效访问数据库记录的方式,通过游标可以实现对数据库中记录的查找、修改和删除等操作。 - **应用场景**:适用于需要频繁读写数据库的应用场景。 #### 1.2 Getting ...
MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. ...
1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5...
1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年...
1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5...
关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 ...
原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 ...
1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年...
MySQL 5.1参考手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL ...
1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5...