您的位置:首页 > 数据库

BDB 数据库开发实例

2012-12-27 20:40 127 查看
/**
 * 
 */
package cn.com.bdb;

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;

/**
 * @author QG
 *
 * 2010-12-8 下午03:59:30 MyBerkeleyDB.java 
 *
 * @since    1.0    @version 1.0
 *
 */
public class MyBerkeleyDB {

    private Environment env;
    
    private Database db;

    public MyBerkeleyDB() {

    }

    public void setDbUp(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();
        }
    }

    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;
    }
    
    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;
    }
    
    public static void putDb(){
        MyBerkeleyDB mbdb = new MyBerkeleyDB();
        mbdb.setDbUp("D:\\bdb", 1000000);
        mbdb.open("DB");
        System.out.println("开始向BDB DB中存入数据…");
        for(int i=0; i<20; i++) {
            try {
                String key = "Key"+i;
                String value = "Value"+i;
                System.out.println("[" + key + ":" + value + "]");
                mbdb.put(key , value);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        mbdb.close();
    }
    
    public static  void getDb(){
        MyBerkeleyDB mbdb = new MyBerkeleyDB();
        mbdb.setDbUp("D:\\bdb", 1000000);
        mbdb.open("DB");
        System.out.println("开始从BDB DB中取数据…");
        for(int i=0; i<20; i++) {
            try {
                String key = "Key"+i;
                String value = "Value"+i;
                System.out.println("[" + key + ":" + value + "]");
                System.out.println(mbdb.get(key));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        mbdb.close();
    }

    public static void main(String[] args) {
        putDb();
        getDb();
    }

}

 

以上实例需要调用je-3.2.44.jar包,测试通过。

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