Android 数据库存储之db4o
在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的更多相关文章
- android 数据存储Ⅱ
本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...
- Android数据库之基本概念(上)
1.Android数据库简单介绍 Android通过结合使用SQLite数据库和Content Provider,提供了结构化数据的持久功能. SQLite数据库能够通过一种结构化的.易于管理的方法来 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- android之存储篇——SQLite数据库
转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...
- Android数据库高手秘籍(五)——LitePal的存储操作
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/39345833 经过前面几篇文章的学习,我们已经把LitePal的表管理模块的功能都 ...
- Android - 数据存储 -在SQL数据库中保存数据
对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...
- <Android基础> (六) 数据存储 Part 3 SQLite数据库存储
6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...
- Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储
前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...
- android开发之使用SQLite数据库存储
http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...
随机推荐
- Android7.0 应用内升级
Android7.0应用内升级 最近线上项目在7.0机器上出现应用内升级失败,原来是由于Android7.0权限问题导致. 如果项目的 targetSdkVersion>=24 在处理应用内升级 ...
- CentOS 5/6上安装EPEL源
转自:http://www.vckai.com/p/25 EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fe ...
- c++ reference can not be reassigned
#include <iostream> using namespace std; int main () { // declare simple variables int i; int ...
- Richardson成熟度模型
Richardson Maturity Model(RMM) 迈向REST的辉煌 一个模型(由Leonard Richardson开发)将REST方法的主要元素分解为三个步骤.这些引入资源,http动 ...
- hdu1217Arbitrage(floyd+map)
Arbitrage Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- Python-S9——Day82-CRM项目实战
1.权限的概念: 2.RBAC的设计: 3.注册登录用户所有权限到session中: 4.权限的校验: 5.基于中间件的权限校验: 1.权限的概念: 1.1 项目与应用: Project App 1. ...
- Navicat和DBeaver的查询快捷键
1.Navicat for MySQL(连接MySQL数据库的工具) ctrl + r 执行查询页中所有的sql语句 ctrl + shift + r 只运行选中的sql语句 2.DBeaver(支持 ...
- 【jmeter进阶之逻辑控制器】
jmeter进阶之逻辑控制器 转载 https://www.cnblogs.com/malinalian/p/10491946.html 常用的逻辑控制器 1,循环控制器:可以设置该控制器内 ...
- 数据库Mysql的学习(八)-储存过程和事务和导入导出
储存过程 DELIMITER // CREATE PROCEDURE pro1() BEGIN SELECT book_id,book_name,category FROM bookinfo t1 J ...
- Python最长连续数列的O(n)解法
题目 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入样例 100,4,200,1,3,2 54,55,300,12 1 5,4,3,2,1 1,2,3,4,5, ...