Android轻松搭建数据库框架 (android 简单数据库框架)

随着移动互联网的迅猛发展,手机应用得到越来越广泛的应用。手机应用在数据存储方面的需求也越来越强烈。而数据库的应用在手机应用中也越来越常见。在Android平台中,SQLite数据库是最常用的数据库。但是原生的SQLite数据库开发比较麻烦,难以维护。本文将介绍如何在Android平台中快速搭建一个数据库框架。

一、最基本的SQLite数据库操作

先来介绍一下SQLite的基本操作,这里只讲解SQLiteDatabase类的方法,其他的不在这里详细说明。

1. 创建数据库

SQLiteDatabase是一个抽象类,不能直接实例化。通过其静态方法openOrCreateDatabase创建或打开一个数据库。

“`

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(“test.db”, null);

“`

这里的“test.db”是数据库的名称,第二个参数是游标工厂。游标在查询时起到的作用非常大,这里不做介绍。执行这行代码后,如果数据库不存在,则创建一个。如果存在则打开。

2. 创建表结构

创建表结构需要使用execSQL方法。这个方法可以执行任何SQL命令。执行时如果出现异常会抛出SQLException异常。下面模拟创建一个表,名字为person,包含属性id和name。

“`

db.execSQL(“create table person(id integer primary key autoincrement, name varchar(20))”);

“`

id是主键,自动递增,name是varchar类型的,长度为20。

3. 插入数据

插入数据使用insert方法,其中之一个参数是表名,第二个字段是空列的默认值,第三个参数是一个ContentValues对象,该对象用来存放要插入的值。ContentValues对象的put方法可以存放各种类型的数据。

“`

ContentValues values = new ContentValues();

values.put(“name”, “张三”);

db.insert(“person”, null, values);

“`

下面写一个批量添加数据的方法:

“`

public void insertBatch(List persons) {

db.beginTransaction();

try {

for (Person person : persons) {

ContentValues values = new ContentValues();

values.put(“name”, person.name);

db.insert(“person”, null, values);

}

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

}

“`

这里的db.beginTransaction和db.endTransaction是事务的开始和结束,其中db.setTransactionSuccessful是提交事务操作。

4. 查询数据

查询数据操作需要用到query方法。该方法有五个参数:

“`

query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

“`

table:表名。

columns:要查询的列名。

selection:where条件。

selectionArgs:where条件中的参数值。

groupBy:分组。

having:分组的筛选条件。

orderBy:排序方式。

比如下面是一个查询person表中所有的数据的方法:

“`

public List queryAll() {

List persons = new ArrayList();

Cursor cursor = db.query(“person”, null, null, null, null, null, null);

if (cursor.moveToFirst()) {

do {

int id = cursor.getInt(cursor.getColumnIndex(“id”));

String name = cursor.getString(cursor.getColumnIndex(“name”));

Person person = new Person(id, name);

persons.add(person);

} while (cursor.moveToNext());

}

cursor.close();

return persons;

}

“`

二、DAO数据库框架搭建

尽管我们已经了解了SQLite数据库的基本操作,但却很难维护。这时候,我们需要使用一类更高级的数据库框架,这就是DAO框架。DAO框架有很多实现框架,比如ORMLite、GreenDAO、Room等。这里我们以GreenDAO为例,来介绍如何使用DAO框架搭建一个可维护的数据库。

1. 创建Android项目

这里就不详细说明了,直接创建一个Android项目即可。

2. 接入GreenDAO库

在build.gradle文件进行配置:

“`

dependencies {

implementation ‘org.greenrobot:greendao:3.2.0’

}

“`

3. 配置GreenDAO

在app的build.gradle文件中添加:

“`

apply plugin: ‘org.greenrobot.greendao’

dependencies {

implementation ‘org.greenrobot:greendao-generator:3.2.0’

}

greendao{

schemaVersion 1

targetGenDir ‘src/mn/java’

daoPackage ‘com.example.myapplication.greendao’

generateTests false

generateDebug true

generateRelease true

targetGenDirTests ‘src/mn/java’

daoTemplateDir ‘src/mn/java/templates’

}

“`

配置文件可以支持更复杂的需求。主要需要配置的是:

schemaVersion:数据库的版本号。

targetGenDir:GreenDAO代码生成位置。

daoPackage:DAO实体的包名。

3. 配置GreenDAO后,需要对其进行初始化,使用build生成DAOGenerator文件。

4. 创建DAO实体

创建一个实体,比如下面的Person类。

“`

@Entity

public class Person {

@Id(autoincrement = true)

Long id;

String name;

public Person(Long id, String name) {

this.id = id;

this.name = name;

}

public Person() {

}

//省略getter和setter方法

}

“`

要注意的是:所有在数据库中存储的字段都要定义为属性。

这里需要使用@Entity注解表示一个实体在数据库中是一个表。

@Id为主键注解,其中autoincrement为主键是否自增长的标志。

属性的类型必须是支持数据库存储的类型,例如String类型、int类型等。

5. 创建DAO

创建一个DAO,比如下面的PersonDao类:

“`

public class PersonDao {

private final DaoSession daoSession;

private final PersonDaoImpl dao;

public PersonDao(DaoSession daoSession) {

this.daoSession = daoSession;

this.dao = new PersonDaoImpl(daoSession);

}

public void insert(Person person) {

dao.insert(person);

}

public void deleteAll() {

dao.deleteAll();

}

public List queryAll() {

return dao.queryBuilder().list();

}

}

“`

其中daoSession是在GreenDAO初始化后自动生成的,该类封装了对数据库的操作,对数据库的访问不能直接通过DaoSession,所以我们构建了PersonDao封装了对实现类的操作。

PersonDaoImpl是GreenDAO自动生成的,它是PersonDao操作底层的实现类。

6. 初始化

在MnActivity中初始化GreenDAO,在onCreate方法中进行初始化:

“`

public class MnActivity extends AppCompatActivity {

private PersonDao personDao;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mn);

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, “test-db”);

Database db = helper.getWritableDb();

DaoSession daoSession = new DaoMaster(db).newSession();

personDao = daoSession.getPersonDao();

}

}

“`

到这里,一个完整的GreenDAO开发流程就介绍完了。

三、


数据运维技术 » Android轻松搭建数据库框架 (android 简单数据库框架)