Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布

简介:
文章关键字:Java 嵌入式开发 DB data 通讯录 address book 文本数据库 微型 记录 数据

下载地址: [url]http://code.google.com/p/greenvm/downloads/list[/url]

LMini是Loonframework分支项目之一,它是一个仅有55KB的纯Java嵌入式文本数据库,不支持SQL语句,完全以面向对象方式进行数据操作,在Loonframework主包中主要负责实现缓存数据的硬盘持久化功能。但作为项目分支,LMini并非必须与Loonframework主包集成,也允许作为单独的微型数据库存在。

LMini的开发目的在于提供一种简单快捷的本地数据持久化方式,如游戏记录、文件缓存、简单的增、删、改、查操作都可以通过LMini得以实现,它的优势在于完全脱离java.sql包依赖,比db4o、sqllite体积更小,比Properties所提供的功能等多。

LMini通过MDB接口进行数据库操作,而根据MDB接口所获得的不同实例,操作模式又可分为如下三种,即:内存模式、单一文件模式及多文件模式。

内存模式:

实例化此模式后,将直接在内存开辟一块区域进行数据库模拟操作,当程序关闭时内存数据库也随之消失,不能持久化保存,调用方法为Engine.getMEMDB。

单一文件模式:

实例化此模式后,数据库将以文件形式存在,程序会自动产生唯一的物理文件于硬盘之上,所有操作也将基于此物理文件进行,只要此文件不被删除数据将永久存在,调用方法为Engine.getMDBOnly。

多文件模式:

实例化此模式后,数据库将以文件夹形式存在,程序会自动根据创建的表格产生多个物理文件于此文件夹中,所有操作将基于此文件夹进行
,只要此文件夹及其中文件不被破坏,数据将永久存在,调用方法为Engine.getMDBMany。

以上三种模式皆为接口实现,操作方法完全一致,仅在保存方式上有所分别。

基本操作方式:

1、数据库的创建与打开:

   当我们对MDB接口进行实例化,并调用begin方法后,LMini会自动监测指定位置是否已有文本数据库存在,有则加载其文件内容,没有将自动创建一个空数据库于指定位置。

   LMini以一个begin方法打开数据库连接,以end方法关闭连接,具体代码如下:

      
MDB mdb = Engine.getMDBOnly( "c:\\test.db");
mdb.begin();
mdb.end();


2、密码保护功能:

除内存模式之外,LMini提供了简单的密码保护功能,以防止数据库文件被他人盗用,只要在begin创建数据库时设定即可,密码错误时再次打开此文件将提示异常,具体代码如下:

       
MDB mdb = Engine.getMDBOnly( "test.db");
        mdb.openTable( "test",TypeBase.STRING);
         //设定密码
        mdb.begin( "wt98ab");
        mdb.end();


3、增、删、改、查:

    LMini以openTable方法打开或创建一个指定表格,但区别于其它数据库,Lmini每个表格仅允许保存一种数据类型,以简化LMini文件处理过程;目前其支持的类型为Long,Integer,String,Byte[],Object五种,我们可以通过Lmini提供的TypeBase类注入需要的类型。不填写情况Lmini将默认表格存储类型为Object,也就是所有经过序列化的对象都可以存储于本地硬盘之上。

    LMini针对CRUD提供了相对应的insert、select、update、delete方法以供调用,只要注入相关对象即可完成操作,无需用户关心转换细节,具体代码如下:

   
MDB mdb = Engine.getMDBOnly( "test.db");
        mdb.openTable( "test",TypeBase.STRING);
         //设定密码
        mdb.begin( "wt98ab");
         //插入数据
        mdb.insert( "久保", "砍砍砍");
        mdb.insert( "尾田""我要成为海军");
        mdb.insert( "岸本""都死光了");
         //删除数据
        mdb.delete( "岸本");
         //变更数据
        mdb.update( "尾田""我要成为海贼王");
         //查询
        System.out.println(mdb.select( "尾田"));
        mdb.end();

     
4、表格中数据的遍历:

   LMini提供了getTableKey方法以获得当前表格下所有字段名,提供了getTableList方法以获得当前表格下所有字段及数据,具体代码如下:

         
MDB mdb = Engine.getMDBOnly( "test.db");
                mdb.openTable( "test",TypeBase.STRING);
                 //设定密码
                mdb.begin( "wt98ab");
                 //插入数据
                mdb.insert( "久保", "砍砍砍");
                mdb.insert( "尾田""我要成为海军");
                mdb.insert( "岸本""都死光了");
                 //删除数据
                mdb.delete( "岸本");
                 //变更数据
                mdb.update( "尾田""我要成为海贼王");
                 //查询
                System.out.println( "尾田说:"+mdb.select( "尾田"));
             
                 for(Iterator it=mdb.getTableKey().iterator();it.hasNext();){
                        String name=(String)it.next();
                        System.out.println( "字段名:"+name);
                        System.out.println( "数据: "+(String)mdb.getTableList().get(name));
                }
             
                mdb.end();        

    
程序示例:

本例提供了一个Lmini操作通讯录的简单操作示例,利用开源metawidget项目所提供的addressbook-swing加以改造而成,仅替换其直接硬编码在Table中数据为真实操作Lmini数据库并修正部分英文窗体为中文,metawidget项目所有权利均与本人无关,本示例仅为借用其界面,特此声明。(PS:源码在jar中,另外使用metawidget的UI还挺费空间,要用5MB的支持库|||……)






LMini的操作方式非常简便,笔者昨天预告的TLOH项目的游戏存档器也将采用LMini加以实现,目前LMini还在不断完善中,希望各位看客能给予支持及指正,另外现在发的LMini比Loonframework主包中的版本差一次更新,具体差别到发布Loonframework-0.2.0时就能看到了。 

下载地址(这些小程序依例丢在code.google上):[url]http://code.google.com/p/greenvm/downloads/list[/url]



本文转自 cping 51CTO博客,原文链接:http://blog.51cto.com/cping1982/141192

相关文章
|
1月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
1月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
195 77
|
2月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
216 94
|
11天前
|
Java 关系型数据库 MySQL
2025 年互联网公司校招 Java 面试题总结及答案实操示例解析
本项目基于Spring Boot 3与Java 17技术栈,围绕校园招聘常见面试题,提供核心知识点的实操示例。涵盖多线程、RESTful API设计、数据库操作(Spring Data JPA)、事务管理及异常处理等。通过完整代码实现与运行步骤,帮助理解用户管理、线程池配置等实际应用场景。资源包含项目结构、关键代码示例(如User实体类、UserService服务层、ThreadService多线程实现)及数据库迁移脚本,适合深入学习与实践。环境要求:JDK 17+、Maven 3.8+、MySQL 8.0+。
56 3
|
2月前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
50 4
|
3月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
171 17
|
4月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
161 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
4月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
336 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
安全 JavaScript 前端开发
java基础示例
这篇文章将为大家详细讲解有关java基础之方法的示例分析
|
18天前
|
算法 Java 调度
Java多线程基础
本文主要讲解多线程相关知识,分为两部分。第一部分涵盖多线程概念(并发与并行、进程与线程)、Java程序运行原理(JVM启动多线程特性)、实现多线程的两种方式(继承Thread类与实现Runnable接口)及其区别。第二部分涉及线程同步(同步锁的应用场景与代码示例)及线程间通信(wait()与notify()方法的使用)。通过多个Demo代码实例,深入浅出地解析多线程的核心知识点,帮助读者掌握其实现与应用技巧。

热门文章

最新文章