BDB数据库操作工具类 CRUD整合

5 篇文章 0 订阅
1 篇文章 0 订阅

BDB介绍

开源-kv数据库
文件数据库
嵌入式数据库
提供多编程语言调用的各个版本,数据具备完全可移值性
提供一系列函数访问数据库,对SQL早期不支持,现在支持的有限
无网络通信模块
开发公司:Sleepycat Software->Oracle

maven依赖添加

<!-- 加入java bdb 3.3.75/6.4依赖 -->
      <dependency>
           <groupId>com.sleepycat</groupId>
        <artifactId>je</artifactId>
           <version>3.3.75</version>
      </dependency>
<!-- 专业下载bdb依赖添加的仓库源 -->
<repository>
        <id>oracleReleases</id>
        <name>Oracle Released Java Packages</name>
        <url>http://download.oracle.com/maven</url>
        <layout>default</layout>
     </repository>

BDB掌握之API应用

步骤拆解:

数据库环境变量配置
数据库CRUD操作
数据库关闭
数据库环境变量配置

代码实现

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;

/*
 封装的bdb操作工具栏 集成了增、删、改、查、关闭、同步操作等方法
 */
public class BDBOperatorUtil {
	private String dbEnvFilePath;
	private String databaseName;
	// 环境变量的声明
	private Environment myDbEnvironment = null;
	// 数据库操作的对象声明
	private Database weiboDatabase = null;
	
	/**
	 * bdb操作环境变量和数据库初始化
	 * 
	 * @param dbEnvFilePath
	 * @param databaseName
	 */
	public BDBOperatorUtil(String dbEnvFilePath, String databaseName) {
		this.dbEnvFilePath = dbEnvFilePath;
		this.databaseName = databaseName;

		/**
		 * 初始化数据库参数
		 */
		try {
			// 初始化数据存储根目录文件夹
			File f = new File(dbEnvFilePath);
			if (!f.exists()) {
				f.mkdirs();
			}
			// 数据库配置变量初始化
			DatabaseConfig dbConfig = new DatabaseConfig();// 打开数据库
			dbConfig.setAllowCreate(true);
			// 初始化环境配置变量,基于该变量去配置环境变量
			EnvironmentConfig envConfig = new EnvironmentConfig();
			// 当使用的数据库配置变量不存在的时候,就自动创建
			envConfig.setAllowCreate(true);
			// 正式初始化数据库的环境
			myDbEnvironment = new Environment(f, envConfig);
			// 打开一个数据库,如果不存在,则自动创建;第一个参数表示是否是事务
			weiboDatabase = myDbEnvironment.openDatabase(null, databaseName,
					dbConfig);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 将指定的kv存放到bdb当中,并可以选择是否实时同步到磁盘中
	 * 
	 * @param key
	 * @param value
	 * @param isSync
	 * @return
	 */
	public boolean put(String key, String value, boolean isSync) {
		// 数据的key
		// 数据的value
		try {
			// 将key和value都封装到DatabaseEntry中
			DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
			DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));
			// 写入数据库
			weiboDatabase.put(null, theKey, theData);
			if (isSync) {
				// 数据同步到磁盘
				this.sync();
			}
			// 对该库进行count操作,查看有多少条数据
			System.out.println(weiboDatabase.count());
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	// 删除bdb中指定的key值
	public boolean delete(String key) {
		DatabaseEntry theKey;
		try {
			theKey = new DatabaseEntry(key.getBytes("UTF-8"));
			weiboDatabase.delete(null, theKey);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}
	/**
	 * 读取bdb的key对应的数据
	 * 
	 * @param key
	 * @return
	 */
	public String getValue(String key) {
		// 要读取数据的key
		try {
			// 将读取数据的key封装到DatabaseEntry中
			DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
			// 将读取出来的值以二进制形式放到DatabaseEntry中
			DatabaseEntry theData = new DatabaseEntry();
			// 执行读取操作
			weiboDatabase.get(null, theKey, theData, LockMode.DEFAULT);
			if (theData.getData() == null) {
				return null;
			}
			// 将二进制数据转化成字符串值
			String result = new String(theData.getData(), "utf-8");
			// 打印之
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 同步数据到磁盘当中,相当于让数据实时持久化
	 * 
	 * @return
	 */
	public boolean sync() {
		if (myDbEnvironment != null) {
			try {
				myDbEnvironment.sync();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return true;
		}
		return false;
	}

	/**
	 * 关闭环境变量数据库
	 * 
	 * @return
	 */
	public boolean close() {
		try {
			if (weiboDatabase != null) {
				weiboDatabase.close();
			}
			if (myDbEnvironment != null) {
				myDbEnvironment.sync();
				myDbEnvironment.cleanLog();
				myDbEnvironment.close();
			}
			return true;
		} catch (DatabaseException e) {
			e.printStackTrace();
		}
		return false;
	}
	public static void main(String[] args) {
		String dbEnvFilePath = "bdb2";
		String databaseName = "weibo2";
		String key ="self_key_1";
		String value="工具类操作实例";
		BDBOperatorUtil bdUtil=new BDBOperatorUtil(dbEnvFilePath, databaseName);
//		bdUtil.put(key, value, false);
//		bdUtil.sync();
		System.out.println(bdUtil.getValue(key));
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BDB 专业版 v3.6 -- 索引 1. 关于BDB 2. 系统要求 3. 如何购买 4. 联系我们 5. 感谢 1.关于BDB __________________________________________________________ BDB是贝恩软件(www.bainsoft.com)发布的数据库设计和数据库部署软件, 支持Oracle,MS SQLServer,Access,MySQL,SQLAnyWhere和Sybase数据库。 您可以通过BDB来简化软件开发和部署过程: 1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 2,数据库部署。 通过BDB创建数据库部署程序。 除了常规调用外,在BDB中还提供了外部命令行调用数据库自动安装支持, 您可以通过该功能把数据库部署集成到您的安装程序中。 3,数据库自动升级。 可在不影响原有数据表数据的前提下进行数据库自动升级。 此外,可方便快捷进行数据库自动升级部署,只需更新BDB自动生成的资源文件即可。 4,数据库迁移。 提供了完整的数据库迁移方案,可进行跨数据库平台迁移。可迁移的数据对象包括: 数据表,索引,约束,缺省值,触发器,视图,存储过程,函数以及数据表数据。 5,查询分析 数据库快速查询分析功能。可进行数据表数据查询,编辑及导出操作: A,提供专用的SQL编辑器。支持语法高亮,脚本预定义。 B,支持脚本快速选择输入。 C,提供了不同数据库平台下统一的快速查询语法支持(如“DESC”)。 D,数据表数据和Excel文件之间的双向导入导出操作。 E,提供特定的数据文件格式,用于不同数据库之间的数据导入,导出。 6,SQL脚本预输出 数据库模型或实体数据库有所改动时,可预输出更新SQL脚本,同时还可以 进行数据库重建SQL脚本预览。 7,支持跨数据库平台。 您只需按熟悉的数据库平台进行数据库设计,在部署到其他数据库平台时, 系统会进行数据类型转换及不同数据库平台下的语法差异处理。 8,采用方案模式。 支持同时进行多个数据库管理。 9,支持可重用属性定义及同步。 10,开发语言支持。 开放的数据库物理结构文件格式(XML标准格式),并提供了外部调用数据库结构源程序 (包含C#/Delphi/JAVA三个版本)。 11,支持多语言。 可根据需要增加新的语言包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值