在Android中,使用数据库除了可以使用Android内嵌的SQLite,还可以使用db4o
db4o是嵌入式的面向对象的数据库,是基于对象的数据库,操作的数据本身就是对象。
特点:
对象以其本身的方式来存储,没有错误匹配问题;
自动管理数据模式;
存储时不改变数据类特征;
自动绑定数据;
查询时直接获取到所查询的对象的实例
下边是一个db4o数据库操作实例类,使用时需要先下载db4o支持jar包,解压缩得到db4o-8.0.249.16098-core-java5.jar文件,加入工程;

Db4oEmbedded.openFile(EmbeddedConfiguration config, String databaseFileName);// 获取数据库api
public class DBHelper {
// db4o创建与打开与sqlite类似,在数据库不存在时先创建一个db4o数据库,然后再打开数据库,如果数据库已存在,直接打开数据库;
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "/sdcard/db4o.data"); /*
* 添加student对象,调用ObjectContainer.store()方法保存,需要调用commit方法才会真正保存到数据库中;
*/
public void addStudent(Student student) {
db.store(student);
db.commit();
} /*
* 查询java对象也需要指定一个同类型的java对象,如果想枚举保存在数据库中同一个类所有的对象,可以使对象中的变量值都保持默认值;
*/
public List<Student> getStudents() {
// queryByExample方法的参数是一个保持默认变量值的student对象
ObjectSet<Student> result = db.queryByExample(new Student());
List<Student> list = new ArrayList<Student>();
while (result.hasNext()) {
Student stu = result.next();
list.add(stu);
}
return list;
} /*
* 如果想查询某一个Student对象,可以指定对象中的任何一个或多个变量值
*/
public Student getStudent() {
ObjectSet<Student> result = db.queryByExample(new Student("new_name", null));
// 查询name为"name";id为"id"的对象,
while (result.hasNext()) {
return result.next();
}
return null;
} /*
* 更新类似于插入数据,需要调用ObjectContainer.store方法,但首先需要获得更新的对象
*/
public void update() {
ObjectSet<Student> result = db.queryByExample(new Student("name0", null));
if (result.hasNext()) {
Student stu = result.next();
stu.setName("new_name");
db.store(stu);
db.commit();
}
} /*
* 删除对象也需要首先获取要删除的对象
*/
public void delete() {
ObjectSet<Student> result = db.queryByExample(new Student("name1", null));
if (result.hasNext()) {
db.delete(result.next());
db.commit();
}
}
}

Student.java 一个javabean对象,包含两个字段name和id,和相关的get/set方法;

public class Student {
private String name;
private String id;
}

通过上面的五个方法,可以很明显的看出,所有的操作都是基于对对象的操作,CRUD...
而且操作比较简单,不需要sql语句,使用方便;

Android 数据库存储之db4o的更多相关文章

  1. android 数据存储Ⅱ

    本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...

  2. Android数据库之基本概念(上)

    1.Android数据库简单介绍 Android通过结合使用SQLite数据库和Content Provider,提供了结构化数据的持久功能. SQLite数据库能够通过一种结构化的.易于管理的方法来 ...

  3. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  4. android之存储篇——SQLite数据库

    转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...

  5. Android数据库高手秘籍(五)——LitePal的存储操作

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/39345833 经过前面几篇文章的学习,我们已经把LitePal的表管理模块的功能都 ...

  6. Android - 数据存储 -在SQL数据库中保存数据

    对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...

  7. <Android基础> (六) 数据存储 Part 3 SQLite数据库存储

    6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...

  8. Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储

    前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...

  9. android开发之使用SQLite数据库存储

    http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...

随机推荐

  1. CSS3 子节点选择器

    CSS3中新增了几个子元素选择器,大大提高了开发者的开发效率.之前有些要通过为一个个子元素添加class,或者js实现才能实现的效果.现在可以很方便的用选择器实现. 这些新的样式已被现代浏览器及IE9 ...

  2. android 学习四 ContentProvider

    1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问. 2.对sqllite数据库的操作,可以在命令行通过adb工具登录 ...

  3. nginx 重启报错

    错误信息: nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or d ...

  4. 爬虫1.5-ajax数据爬取

    目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 ...

  5. 一键部署 Docker Datacenter ---简化docker数据中心安装步骤

    DDC 简介 2016年2月下旬,Docker发布了企业级容器管理和服务部署的整体解决方案平台-Docker Datacenter,简称DDC.DDC 有三个组件构成:1. Docker Univer ...

  6. 2019寒假训练营寒假作业(二) MOOC的网络空间安全概论笔记部分

    视频课程--MOOC的网络空间安全概论笔记 第一章 网络空间安全概述 2001年,网络空间概念被首次提出: 网络空间安全框架: 1.设备层安全: 可通过截获电磁辐射获取计算机信息.通过硬件木马(恶意电 ...

  7. 团队作业7——第二次项目冲刺(Beta版本)-第三篇

    1.工作分工: 团队成员 分工 郭达22120 项目整合,后台代码 刘德培44060 前台界面优化 石浩洋22061 前台界面优化 曾繁钦22056 前台界面优化.测试 孙斌22030 后台代码 2. ...

  8. VS2013 “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService RequiredTypeIdentity Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService 匹配的导出”

    下面是我出错误的附加图片 这个错误导致无法打开项目. 解决方法: 解: C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\12.0 ...

  9. 使用协程(gevent)实现请求

    协程,又称微线程.英文名Coroutine. 协程最大的优势就是协程极高的执行效率.因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就 ...

  10. mini2440 Nor Flash工作原理分析

    我的mini2440上是只接了一块Nor Flash,型号是S29AL016M90TAI02,这是一块2M Byte,16位宽度的Nor Flash,用于引导扇区的闪存.原理图里面关键的引脚是: 地址 ...