zoukankan      html  css  js  c++  java
  • 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语句,使用方便;

  • 相关阅读:
    Xen, Linux and udev
    xend的调试方法
    xenstored为什么不能重启?
    [转]xen虚拟windows使用vnc桌面鼠标位置偏移现象的解决
    基于模板的代码生成器
    区分JavaScript中的undefined,null和NaN
    ExtJS+ASP.NET实现异步Tree的节点搜索和查找下一个(FindNext)
    ExtJS+ASP.NET实现Tree节点的拖动(DragDrop)
    ExtJS+ASP.NET实现真实的进度条显示服务器端长时间操作的进度
    说说企业架构(企业级架构)和应用程序架构
  • 原文地址:https://www.cnblogs.com/a284628487/p/3141221.html
Copyright © 2011-2022 走看看