在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. Java - 无乱码读写文件

    Java读取数据流的时候,一定要指定数据流的编码方式,否则将使用本地环境中的默认字符集. BufferedReader reader = null; String laststr = "&q ...

  2. iOS UIWebView加载时添加进度条01

    标注:此框架仅适合UIWebView  对iOS8后新出的WKWebView不适用,当然,你可以尝试修改框架里的几个代理方法. 框架是:NJKWebViewProgress 导入头文件 #import ...

  3. cf#512 C. Vasya and Golden Ticket

    题目链接 http://codeforces.com/contest/1058/problem/C 这题还是暴力最方便,和的情况最多有n*a[i]  900种把每种都试一遍 #include<b ...

  4. unittest,selenium——批量,多线程执行多文档用例

    之前做过批量执行多.py文件,为了省时也做过单py文件多线程,现在做多py文件用例多线程 # coding:utf-8import unittestimport osimport timeimport ...

  5. C++0x,std::move和std::forward解析

    1.std::move 1.1std::move是如何定义的 template<typename _Tp> constexpr typename std::remove_reference ...

  6. TW实习日记:第16天

    前端的样式bug实在是太太太莫名其妙了,尤其是封装好的组件,一层套一层的,根本不知道是哪一层出了问题...除了改bug就是做新功能,真想吐槽一下这个项目的留言板,根本没人会用吧...这功能实在是太老旧 ...

  7. 代码对齐 (Alignment of Code,ACM/ICPC NEERC 2010,UVa1593)

    题目描述: 解题思路: 输入时提出单个字符串,并用一个数组记录每列最长长度,格式化输出 #include <iostream> #include <algorithm> #in ...

  8. 七:HDFS Permissions Guide 权限

    1.权限模式     简单:启动HDFS的操作系统用户即为超级用户,可以通过HADOOP_USER_NAME指定     kerberos: 2.group mapping      组列表由grou ...

  9. codeforces 269C Flawed Flow(网络流)

    Emuskald considers himself a master of flow algorithms. Now he has completed his most ingenious prog ...

  10. 再学习Webform页面生命周期

    参考文章: 在vs2010,新建一个aspx页面,页面头部有一行代码: <%@ Page Language="C#" AutoEventWireup="true&q ...