Android NoSQL之SnappyDB-阿里云开发者社区

开发者社区> 数据库> 正文

Android NoSQL之SnappyDB

简介: Android NoSQL之SnappyDB 常规到的Android开发需要SQLite或者ORMLite这样的数据库存储数据,但是在有些情况下,基于键值对的数据存储效率更高,使用更便捷,在平台级的Java EE项目中,有一种去SQL的趋势和技术,Android平台上也有此类NoSQL技术解决方案,SnappyDB就是一款Android平台上的开源数据存储NoSQL解决方案。
Android NoSQL之SnappyDB


常规到的Android开发需要SQLite或者ORMLite这样的数据库存储数据,但是在有些情况下,基于键值对的数据存储效率更高,使用更便捷,在平台级的Java EE项目中,有一种去SQL的趋势和技术,Android平台上也有此类NoSQL技术解决方案,SnappyDB就是一款Android平台上的开源数据存储NoSQL解决方案。
SnappyDB在github上的项目地址:https://github.com/nhachicha/SnappyDB
一个简单的例子:
package app.zhangphil.app;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.snappydb.DB;
import com.snappydb.DBFactory;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private String TAG = "数据库调试";
    private String DB_NAME = "zhangphil_db";
    private String CLASS = "class";
    private int studentCount = 20;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        writeDB();
    }

    @Override
    protected void onResume() {
        super.onResume();
        readDB();
    }

    private static class Student {
        public String name;
        public int id;
        public AClass aClass;
    }

    private static class AClass {
        public String name;
        public ArrayList<Student> students = new ArrayList<>();
    }

    private void writeDB() {
        try {
            DB snappydb = DBFactory.open(getApplicationContext(), DB_NAME);

            AClass aClass = new AClass();
            aClass.name = "一个班级";

            for (int j = 0; j < studentCount; j++) {
                Student student = new Student();
                student.name = "学生" + j;
                student.id = j;

                student.aClass = aClass;
                aClass.students.add(student);
            }

            snappydb.put(CLASS, aClass);
            snappydb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void readDB() {
        try {
            DB snappydb = DBFactory.open(getApplicationContext(), DB_NAME);
            AClass aClass = snappydb.getObject(CLASS, AClass.class);
            Log.d(TAG, aClass.students.size() + "");
            snappydb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


注意存储的数据结构对象要static。
不要忘记加Android的存取权限。


代码运行的结果输出正确的值20.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章