• 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语句,使用方便;

  • 相关阅读:
    unable to import maven project see logs for details
    全栈工程师:第一章:NodeJS的安装与配置
    Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed",编译过来就是无法打开调试器端口,套接字已关闭
    我的分享:第七章:数据埋点
    我的分享:第六章:IDEA的优秀插件
    我的分享:第五章:java程序员一个人搭建网站(静态的,动态的都有)
    Docker:第三章:简单入门和深入理解
    我的分享:第四章:深入理解MySQL索引底层数据结构与算法
    NPM使用详解(上)
    JS实现继承的几种方式
  • 原文地址:https://www.cnblogs.com/a284628487/p/3141221.html
Copyright © 2020-2023  润新知