package test;
import java.io.File;
import java.security.MessageDigest;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
public class MyBerkeleyDB {
private Environment env;
private Database db;
public MyBerkeleyDB() {
}
public void setUp(String path, long cacheSize) {
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setCacheSize(cacheSize);
try {
env = new Environment(new File(path),envConfig);
} catch (DatabaseException e) {
e.printStackTrace();
}
}
public void open(String dbName) {
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setAllowCreate(true);
try {
db = env.openDatabase(null, dbName, dbConfig);
} catch (DatabaseException e) {
e.printStackTrace();
}
}
public void close() {
try {
if(db != null) {
db.close();
}
if(env != null) {
env.close();
}
} catch (DatabaseException e) {
e.printStackTrace();
}
}
//get
public String get(String key) throws Exception {
DatabaseEntry queryKey = new DatabaseEntry();
DatabaseEntry value = new DatabaseEntry();
queryKey.setData(key.getBytes("UTF-8"));
OperationStatus status = db.get(null, queryKey, value,
LockMode.DEFAULT);
if (status == OperationStatus.SUCCESS) {
return new String(value.getData());
}
return null;
}
//put
public boolean put(String key, String value) throws Exception {
byte[] theKey = key.getBytes("UTF-8");
byte[] theValue = value.getBytes("UTF-8");
OperationStatus status = db.put(null, new DatabaseEntry(theKey),
new DatabaseEntry(theValue));
if(status == OperationStatus.SUCCESS) {
return true;
}
return false;
}
//delete
public boolean delete(String key) throws Exception
{
byte[] theKey = key.getBytes("UTF-8");
OperationStatus status = db.delete(null, new DatabaseEntry(theKey));
if(status == OperationStatus.SUCCESS) {
return true;
}
return false;
}
//update
public boolean update(String key, String value) throws Exception
{
byte[] updateKey = key.getBytes("UTF-8");
byte[] updateValue = value.getBytes("UTF-8");
OperationStatus status = db.put(null, new DatabaseEntry(updateKey), new DatabaseEntry(updateValue));
if (status == OperationStatus.SUCCESS) {
return true;
}
return false;
}
//md5
public static String md5(String string)
{
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
'e', 'f' };
try {
byte[] bytes = string.getBytes();
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(bytes);
byte[] updateBytes = messageDigest.digest();
int len = updateBytes.length;
char myChar[] = new char[len * 2];
int k = 0;
for (int i = 0; i < len; i++) {
byte byte0 = updateBytes[i];
myChar[k++] = hexDigits[byte0 >>> 4 & 0x0f];
myChar[k++] = hexDigits[byte0 & 0x0f];
}
return new String(myChar);
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
MyBerkeleyDB mbdb = new MyBerkeleyDB();
mbdb.setUp("C:/bdb", 1000000);
mbdb.open("myDB");
System.out.println("开始向Berkeley DB中存入数据…");
try {
//mbdb.put("xp", "I'm in shanghai");
//System.out.println(mbdb.get("xp"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0; i<10000; i++) {
try {
String key = "myKey"+i;
String value = "myValue"+i;
System.out.println("[" + key + ":" + value + "]");
mbdb.put(key , value);
} catch (Exception e) {
e.printStackTrace();
}
}
mbdb.close();
}
}
分享到:
相关推荐
#### 1.1 Introduction to BerkeleyDB Cursor - **定义与作用**:游标是Berkeley DB提供的一种高效访问数据库记录的方式,通过游标可以实现对数据库中记录的查找、修改和删除等操作。 - **应用场景**:适用于需要...
BerkeleyDB 多库联合操作 (Secondary Databases) - **3.1 二级数据库介绍** - **概念解释**:二级数据库是对主数据库的一个索引,用于提高查询效率。 - **应用场景**:快速查找、数据统计等。 - **3.2 创建二级...
在“BerkeleyDB概念”部分,文档会介绍Berkeley DB的基本概念,如BTree和Hash数据库的访问方式选择,以及Queue和Recno之间的选择。 接下来,教程会讨论数据库的限制与可移植性、环境设置、异常处理和错误返回。然后...
在 Berkeley DB 中,游标是通过调用 `Db::cursor` 方法创建的。这个方法需要一个事务对象(`DbTxn *txnid`)作为参数,如果你不使用事务,可以传入 `NULL`。第二个参数是游标指针的引用,`Dbc **cursorp`,方法执行...
在 Berkeley DB 中,游标通过 `Db::cursor` 方法打开。此方法需要一个事务对象 `DbTxn *txnid`(如果在事务保护下操作),一个指向游标对象的指针 `dbc**cursorp`,以及一组标志 `u_int32_t flags` 来指定特定的行为...
**Berkeley DB** 是一款轻量级、高性能的嵌入式数据库系统,由Oracle公司开发。它被广泛用于需要在应用程序内部存储和管理数据的场景,尤其适合在资源有限的环境,如移动设备或嵌入式系统。Berkeley DB 提供了键值对...
### BerkeleyDB-Core-c++-GSG 知识点解析 #### 一、Berkeley DB 概述 **Berkeley DB** 是一款高性能的关键值存储数据库系统,被广泛应用于多种应用场景中,包括嵌入式系统、应用程序服务器等。该文档主要介绍了...
Berkeley DB 是一款轻量级、高性能的键值存储系统,专为嵌入式应用和分布式服务设计。它提供了一种高效、灵活的方式来管理和存储数据,尤其适合在资源有限的环境中,如嵌入式设备或者作为应用程序的一部分。Berkeley...
### Berkeley_DB 参考手册知识点概览 #### 1. Berkeley DB 概述 - **开发者**:Berkeley DB 由 Sleepycat Software 公司开发,后被 Oracle 收购。 - **特性**:Berkeley DB 是一个高度可定制且性能卓越的嵌入式...
Berkeley DB -- 入门知识和一个小例子_iyangjian2005997_新浪博客.mht
5. 操作示例:内容中给出了一个使用bsddb模块创建和操作Berkeley DB数据库的例子。示例中首先展示了如何使用原始接口创建数据库环境和打开数据库,然后演示了如何插入数据和关闭数据库。另外,还给出了使用queue数据...
#JBBP - 基于 Java BerkeleyDB 的 Persister 这是一个使用的持久器。 BerkeleyDB 是一个键值数据库,支持完整的 ACID 事务、DPL Java 访问、多线程模型但基于单进程、键控和顺序数据检索等。 然而,使用 Berkeley...
Oracle分发的Berkeley DB的Ruby接口 先决条件 db> = 2(db 使用--with-db-dir=$prefix选项指定此扩展名应与哪个libdb链接。 笔记 当bdb> = 0.5.5时,“ nil”被存储为空字符串(不使用封送时)。 使用打开数据库 ...
- **Berkeley DB**:Berkeley DB提供了一个简单易用的接口,用于实现键/值数据存储。它支持多种编程语言,如C、C++、Java等,并且可以在多种操作系统上运行,包括Linux、Unix和Windows。 4. **安装与配置**: - *...
5. 配置环境变量:在`/etc/ld.so.conf`中添加`/usr/local/BerkeleyDB.4.4/lib`,执行`/sbin/ldconfig`,并在`/etc/profile`末尾添加LD路径。 对于openldap的安装,步骤类似,需要先上传并解压缩openldap的源代码包...
这些产品包括由Oracle开发的Berkeley DB、Julian R. Seward开发的bzip2/libbzip2、由OpenSSL项目开发的OpenSSL工具包、由Eric Young开发的SSLeay、James Clark开发的Expat以及由STLport标准库项目开发的STLport。除...
8. **存储引擎**:如果不需要BDB(Berkeley DB)存储引擎,可以使用`skip-bdb`跳过;对于InnoDB引擎,可以设置`innodb_data_home_dir`和`innodb_log_group_home_dir`来指定InnoDB表的数据和日志文件路径,但在这个...
在这个例子中,我们选择不使用Berkeley DB(BDB),因为它在服务器异常中断时可能导致数据锁定,而是选择更安全的FSFS存储格式。因此,配置命令如下: ```bash ./configure --prefix=/opt/svn --without-berkeley-...
SVN支持两种存储库后端:Berkeley DB(BDB)和File System File Format(FSFS)。由于BDB在服务器异常中断时可能会锁定数据,因此建议使用更安全的FSFS。 接下来是配置步骤: 1. 创建版本库目录,你可以创建多个,...
非关系型数据库如Berkeley DB,支持多种数据结构,适用于半结构化或非结构化数据。 SQLite是典型的嵌入式关系型数据库,它被广泛应用于Android开发中。SQLiteOpenHelper类用于管理数据库版本和创建/升级数据库,而...