您的位置:首页 > 编程语言 > Java开发

Java嵌入式数据库berkeleyDB(二)

2009-02-03 11:21 288 查看
 
package com.sillycat.plugin.berkeley;

import java.io.File;

import java.io.UnsupportedEncodingException;

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 BerkeleyDBService {

private static final String DB_ENVIRONMENT_ROOT = "D:/dbRoot";

private Environment myDBEnvironment = null;

private static Database myDB = null;

/**

* 打开database环境

*

* @return

*/

public void createDBEnvironment() {

   if (myDBEnvironment != null) {

    return;

   }

   try {

    EnvironmentConfig config = new EnvironmentConfig();

    config.setAllowCreate(true);// 如果不存在则创建一个

    config.setReadOnly(false); // 以只读方式打开,默认为false

    config.setTransactional(true); // 事务支持,如果为true,则表示当前环境支持事务处理,默认为false,不支持事务处理

    myDBEnvironment = new Environment(new File(DB_ENVIRONMENT_ROOT),

      config);

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

}

/**

* RAM cache命中率

*

* @return

*/

public long getRAMStatus() {

   long status = 0;

   try {

    // 来监视RAM cache命中率

    status = myDBEnvironment.getStats(null).getNCacheMiss();

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

   return status;

}

/**

* 关闭database环境

*/

public void closeDBEnvironment() {

   try {

    if (myDBEnvironment != null) {

     myDBEnvironment.cleanLog(); // 在关闭环境前清理下日志

     myDBEnvironment.close();

    }

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

}

/**

* 创建一个数据库

*/

public void createDB() {

   // 打开一个数据库,数据库名为

   // sampleDatabase,数据库的配置为dbConfig

   if (myDB != null) {

    return;

   }

   DatabaseConfig dbConfig = new DatabaseConfig();

   dbConfig.setAllowCreate(true);

   try {

    myDB = myDBEnvironment.openDatabase(null, "sampleDatabase",

      dbConfig);

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

}

/**

* 关闭数据库

*/

public void closeDB() {

   try {

    if (myDB != null) {

     myDB.close();

    }

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

}

/**

* 放入数据

*

* @param key

* @param value

*/

public void put(String key, String value) {

   try {

    DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));

    DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));

    myDB.put(null, theKey, theData);

   } catch (DatabaseException e) {

    e.printStackTrace();

   } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

   }

}

/**

* 取得数据

*

* @param key

* @return

*/

public String get(String key) {

   String value = "";

   try {

    DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));

    DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));

    if (myDB.get(null, theKey, theData, LockMode.DEFAULT) == OperationStatus.SUCCESS) {

     byte[] retData = theData.getData();

     value = new String(retData, "UTF-8");

    }

   } catch (DatabaseException e) {

    e.printStackTrace();

   } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

   }

   return value;

}

/**

* 删除数据

*

* @param key

*/

public void remote(String key) {

   DatabaseEntry theKey;

   try {

    theKey = new DatabaseEntry(key.getBytes("UTF-8"));

    myDB.delete(null, theKey);

    // 删除数据

   } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

   } catch (DatabaseException e) {

    e.printStackTrace();

   }

}

public static void main(String[] args) {

   BerkeleyDBService bService = new BerkeleyDBService();

   bService.createDBEnvironment();

   bService.createDB();

   // 记录

   String aKey = "001";

   String aData = "我是正文内容!!!!!!!";

  

   bService.put(aKey,aData);

   String data = bService.get(aKey);

   System.out.println(data);

  

   bService.remote(aKey);

  

   bService.closeDB();

   bService.closeDBEnvironment();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息