Berkely DB使用实例


package com.berkely.db;

import java.io.File;
import java.io.UnsupportedEncodingException;

import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.tuple.TupleBinding;
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 BerkelyDBTeat {

private static final String CHART = "UTF-8";

/**
* @param args
*/
public static void main(String[] args) {
//创建EnvironmentConfig
EnvironmentConfig enConfig = new EnvironmentConfig();
//设置Environment属性
enConfig.setAllowCreate(true);

Database db = null;

try {
File file = new File("db/myTest");
if(!file.exists()){
file.mkdirs();
}
//创建Environment
Environment en = new Environment(new File("db/myTest"), enConfig);

//创建DatabaseConfig
DatabaseConfig dbConfig = new DatabaseConfig();
//设置DatabaseConfig属性
dbConfig.setAllowCreate(true);

//创建Database
db = en.openDatabase(null, "mydb", dbConfig);

//向数据库中插入字符数据
String key = "姓名";
String data = "张三";
DatabaseEntry keyEntry = new DatabaseEntry(key.getBytes(CHART));
DatabaseEntry dataEntry = new DatabaseEntry(data.getBytes(CHART));
db.put(null, keyEntry, dataEntry);
System.out.println("put String data into db success! key: "+key+", data: "+data);

//取字符数据
DatabaseEntry getStringDataEntry = new DatabaseEntry();
if(db.get(null, keyEntry, getStringDataEntry, LockMode.DEFAULT) == OperationStatus.SUCCESS){
byte[] getData = getStringDataEntry.getData();
System.out.println("get data from db success! key: "+key+", get data: "+new String(getData,CHART));
} else{
System.out.println("there is no data for key "+key);
}

//Bind api for数字和字符类型
//向数据库中插入Long型数据
String longKey = "Long类型数据";
Long longData = 1000L;
EntryBinding longBind = TupleBinding.getPrimitiveBinding(Long.class);
DatabaseEntry longKeyEntry = new DatabaseEntry(longKey.getBytes(CHART));
DatabaseEntry longDatabaseEntry = new DatabaseEntry();
longBind.objectToEntry(longData, longDatabaseEntry);
db.put(null, longKeyEntry, longDatabaseEntry);
System.out.println("put Long data into db success! key: "+longKey+", data: "+longData);

//取Long型数据
DatabaseEntry getLongDataEntry = new DatabaseEntry();
if(db.get(null, longKeyEntry, getLongDataEntry, LockMode.DEFAULT) == OperationStatus.SUCCESS){
Long getLongData = (Long)longBind.entryToObject(getLongDataEntry);
System.out.println("get data from db success! key: "+longKey+", get data: "+getLongData);
} else{
System.out.println("there is no data for key "+longKey);
}

} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(db != null){
try {
db.close();
} catch (DatabaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值