Berkeley DB 开源的文件数据库
开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
光说概念可能有点抽象,咱们直接来看一个具体的例子。下面的代码片段是我从网上找到并经过本地验证的,能帮你快速理解它的基本操作。
package org;
import ja va.io.File;
import ja va.io.UnsupportedEncodingException;
import ja va.util.concurrent.TimeUnit;
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 BerkeleyDB {
private Environment environment = null;//数据库环境
private DatabaseConfig dbConfig = null;//数据库配置
private Database database = null;//数据库对象
private String fileName = "D:\\wzx";
private String dbName = "wzx";
public void openDatabase(){
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
envConfig.setReadOnly(false);
envConfig.setTxnTimeout(10000, TimeUnit.MILLISECONDS);
envConfig.setLockTimeout(10000, TimeUnit.MILLISECONDS);
File file = new File(fileName);
if(!file.exists()){
file.mkdirs();
}
environment = new Environment(file, envConfig);
dbConfig = new DatabaseConfig();
dbConfig.setAllowCreate(true);
dbConfig.setTransactional(true);
dbConfig.setReadOnly(false);
if(database == null)
database = environment.openDatabase(null, dbName, dbConfig);
}
public boolean insert(String key, String value, boolean isOverWrite){
try {
DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));
OperationStatus os = null;
Transaction transaction = null;
TransactionConfig txnConfig = new TransactionConfig();
txnConfig.setSerializableIsolation(true);
transaction = environment.beginTransaction(null, txnConfig);
if(isOverWrite){
os = database.put(transaction, theKey, theData);
}else{
os = database.putNoOverwrite(transaction, theKey, theData);
}
transaction.commit();
if(os == OperationStatus.SUCCESS){
return true;
}else{
return false;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return false;
}
public String query(String key){
try {
DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
Transaction transaction = null;
TransactionConfig txnConfig = new TransactionConfig();
txnConfig.setSerializableIsolation(true);
transaction = environment.beginTransaction(null, txnConfig);
OperationStatus os = database.get(transaction, theKey, theData, LockMode.DEFAULT);
transaction.commit();
if(os == OperationStatus.SUCCESS){
String value = new String(theData.getData(), "UTF-8");
return value;
}else{
return "";
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void close(){
if(database != null){
database.close();
}
if(environment != null){
environment.cleanLog();
environment.close();
}
}
public static void main(String[] args) {
BerkeleyDB berkeleyDb = new BerkeleyDB();
berkeleyDb.openDatabase();
/*berkeleyDb.insert("China", "北京", true);
berkeleyDb.insert("US", "纽约", true);*/
System.out.println(berkeleyDb.query("China"));
}
}
相关攻略
开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储 光说概念可能有点抽象,咱们直接来看一个具体的例子。下面的代码片段是我从网上找到并经过本地验证的,能帮你快速理解它的基本操作。 package org; import ja va io File; import ja va io Un
PHP Ja va Bridge 技术解析:原理、配置与应用实践 引言:跨越语言的桥梁 在异构系统集成领域,让PHP和Ja va这两大主流技术栈实现顺畅对话,一直是开发者面临的现实挑战。直接调用?语言不通;各自为政?数据孤岛。有没有一种方式,能像在本地调用函数一样,轻松实现跨语言的方法调用与数据
Ja va防SQL注入:从根源到边界的实战策略 谈起Ja va Web应用的安全,SQL注入绝对是个绕不开的“经典”话题。攻击者之所以能得手,核心往往在于一个简单的操作:字符串拼接。当用户输入被直接拼接到原始SQL语句中时,就相当于为恶意逻辑的植入打开了一扇门。那么,最根本的解决之道是什么?答案是杜
怎么描述 Ja va 异常处理中的“受检异常逃逸”:如何在不声明 throws 的情况下抛出受检异常 在Ja va的世界里,受检异常(Checked Exception)的处理规则向来明确:要么捕获,要么在方法签名中用throws声明。这是编译器定下的铁律。但话说回来,总有一些场景让人想“绕个路”。
详解如何在单页应用(SPA)中,用自定义显式等待替代Thread sleep 在单页应用里做自动化测试,尤其是处理动态内容替换时,很多工程师都踩过同一个坑:点击分页后,断言莫名其妙就失败了。表面上看,加个Thread sleep似乎能“解决”问题,但这其实是把定时冲击波埋进了代码里。今天,我们就来彻
热门专题
热门推荐
小编导语:新年里你一定有很多的话想要说吧!新年是一个新的开始,是一个新的期望,用很多优美的句子来描写元旦吧。更多关于新年元旦的好词好句尽在本站作文网! 新的一年如约而至。每到这个时候,总感觉一切都被按下了重启键,万物都酝酿着新的变化。长大一岁,不仅是年龄的增长,更意味着肩上多了一份沉甸甸的期许。谁都
小编导语 新的一年翩然而至,你准备好用什么美好的词汇来装点这个崭新的开端了吗?关于元旦的精彩语汇,我们已为大家悉心整理,希望能为同学们的写作增添一抹亮色。更多关于新年元旦的绝妙好词好句,尽在本站作文网,欢迎随时取用。 说到新年,脑海里自然会浮现出一连串鲜活的画面与词汇:那是无处不在的喜庆,是家人围坐
恩师回忆奥运冠军董栋坎坷蹦床路 伦敦奥运男子蹦床决赛的结果,想必大家还记忆犹新:中国选手董栋一举夺金,陆春龙收获铜牌,银牌则被俄罗斯选手乌萨科夫摘得。自董栋为山西省拿下这枚具有历史意义的奥运单项金牌后,他的故事便成了街头巷尾热议的话题。近日,董栋的恩师杨志强教练谈起十年前那个决定性的时刻,一切细节依
奥运冠军王旭谈恩师:我和教练的父女情 2004年雅典奥运会女子摔跤72公斤级的领奖台上,王旭的名字被历史铭记。然而,金牌的光芒背后,有一段鲜为人知却更为动人的故事。夺冠那一刻,王旭与教练许奎元紧紧相拥,这位北京姑娘赛后的一句话道出了所有:“这块金牌,实现了我们两个人的梦想。” 在当时的国家摔跤队里,
王羲之书圣卖“当” 提起王羲之,这位东晋书坛的巅峰人物,历代学书者无不奉其为圭臬,尊一声“书圣”。他不仅字写得好,生平逸事也颇为有趣。话说有一年春天,王羲之兴致勃勃地去杭州访友,途经苏州时,被江南的夜色深深吸引,流连忘返。晚风拂面,醉意与美景交融,谁料欣赏了一夜风景后,他竟一病不起。 书童赶忙请来苏





