三、一个简单的BDB JE例子
2011-07-18 12:43
369 查看
package test; import java.io.File; 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; public Environment getEnv() { return env; } private Database db; public MyBerkeleyDB() { } /** * 构建数据库的开发环境 * * @param path 数据库开发环境的目录 * @param cacheSize 配置缓存大小 */ public void setUp(String path, long cacheSize) { EnvironmentConfig envConfig = new EnvironmentConfig(); //当设置为true时,说明若没有数据库的环境时,可以打开。否则就不能打开 envConfig.setAllowCreate(true); //envConfig.setReadOnly(true); envConfig.setCacheSize(cacheSize); //设置事务 //envConfig.setTransactional(true); //当提交事务的时候是否把缓存中的内容同步到磁盘中去。true 表示不同步,也就是说不写磁盘 //envConfig.setTxnNoSync(true); //当提交事务的时候,是否把缓冲的log写到磁盘上,true 表示不同步,也就是说不写磁盘 //envConfig.setTxnWriteNoSync(true); try { env = new Environment(new File(path), envConfig); } catch (DatabaseException e) { e.printStackTrace(); } } /** * 构建数据库 * * @param dbName 数据库的名称 */ public void open(String dbName) { DatabaseConfig dbConfig = new DatabaseConfig(); //设置数据的是否可以创建的属性 dbConfig.setAllowCreate(true); try { db = env.openDatabase(null, dbName, dbConfig); } catch (DatabaseException e) { e.printStackTrace(); } } /** * 关闭berkeley db */ public void close() { try { if (db != null) { db.close(); } if (env != null) { env.cleanLog(); env.close(); } } catch (DatabaseException e) { e.printStackTrace(); } } /** * 通过key得到数据 * @param key berkeley db中的key * @return * @throws Exception */ 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(),"utf-8"); } return null; } /** * 向berkeley db中存入数据 * @param key 存入berkeley db时的键 * @param value 存入berkeley db时的值 * @return * @throws Exception */ public boolean put(String key, String value) throws Exception { byte[] theKey = key.getBytes("UTF-8"); byte[] theValue = value.getBytes("UTF-8"); /** * Berkeley DB中的记录包括两个字段,就是键和值, * 并且这些键和值都必须是com.sleepycat.je.DatabaseEntry类的实例。 */ OperationStatus status = db.put(null, new DatabaseEntry(theKey), new DatabaseEntry(theValue)); if (status == OperationStatus.SUCCESS) { return true; } return false; } /** * 通过 * @param key * @return * @throws Exception */ public boolean del(String key) throws Exception{ DatabaseEntry queryKey = new DatabaseEntry(); queryKey.setData(key.getBytes("UTF-8")); OperationStatus status=db.delete(null, queryKey); if(status==OperationStatus.SUCCESS){ return true; } return false; } public static void main(String[] args) { MyBerkeleyDB mbdb = new MyBerkeleyDB(); //必须先在你的C盘中创建文件夹bdb mbdb.setUp("C://bdb", 1000000); mbdb.open("myDB"); try { System.out.println(mbdb.getEnv().getConfig()); } catch (DatabaseException e) { e.printStackTrace(); } System.out.println("开始向Berkeley db 中输入数据..."); for (int i = 0; i < 20; i++) { try { String key = "myKey" + i; String value = "myValue" + i; //System.out.println("[" + key + ":" + value + "]"); mbdb.put(key, value); } catch (Exception e) { e.printStackTrace(); } } try { System.out.println(mbdb.get("myKey2")); } catch (Exception e) { e.printStackTrace(); } try { if(mbdb.del("myKey2")){ System.out.println("ture"); }else{ System.out.println("false"); } } catch (Exception e) { e.printStackTrace(); } mbdb.close(); } }
相关文章推荐
- 三、一个简单的BDB JE例子
- 三、一个简单的BDB JE例子
- 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)
- 一个简单的pexpect用法例子直接su到root
- 一个简单的C#多线程间同步的例子
- 一个简单的Ant例子
- 自制简单的Java下载器——来自《Java高级编程》的一个关于线程的例子(带上部分注释)
- 一个使用spring的最简单的例子。
- 一个简单的优化例子(锁问题)
- MongoDB: 一个简单的配置两个shared的例子
- 一个简单MySQL触发器例子
- iTextSharp生成pdf的一个简单例子 - 转
- msdn的一个例子 移动就是这么简单..
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码
- 用 jQchart 制作图表的一个最简单的例子
- [转][MEF插件式开发] 一个简单的例子
- [C++] Windows下的socket编程(这是一个简单的TCP/IP例子)
- 一个简单的C#多线程间同步的例子
- [C++] Windows下的socket编程(这是一个简单的TCP/IP例子)
- 一个简单的XML文档例子