Android移动开发之数据库——OrmLite详解
随着开源框架的广泛,对于Android开发者越来越有优势,极大的提高了开发效率和开发周期。android系统的sqlite轻量级数据库操作SQL语句较为麻烦,如果不熟悉Web开发的朋友可能对SQL语句还比较陌生。
一、本文可以让你学到的内容:
1.使用第三方框架OrmLite数据库开发Android移动应用程序;
2.不再使用SQL语句实现增删查改,直接一对一传参操作数据库;
3.提高开发周期和效率,剩余时间可以泡吧和泡牛~
二、OrmLite认识:
Ormlite官网: http://ormlite.com/ 开发文档下载(pdf)。 但是是英文文档哦,不要一看到是英文的就害怕了,其实里面单词比较简单,能够看得懂的,多看看英文文档还是挺有帮助的。
三、OrmLite使用:
1.要使用ormlite很简单,只需要下载相应的两个jar包(目前最新的jar包 ormlite-android-4.48.jar,ormlite-core-4.48.jar下载 )并导入工程即可。
2.新建DBOpenHelper:
package com.cb.db;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.cb.model.BaseModel;
import com.cb.model.parameters.Friend;
import com.cb.model.parameters.Group;
import com.cb.model.parameters.User;
import com.cb.util.MyLogger;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import java.sql.SQLException;
public class DBOpenHelper extends OrmLiteSqliteOpenHelper {
public static final int DB_VERSION = 1; // 更新时候只需要修改这里就可以了
public DBOpenHelper(Context context) {
super(context, "cdy.db", null, DB_VERSION);
MyLogger.CLog().e("创建数据库cdy.db");
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase,
ConnectionSource connectionSource) {
try {
TableUtils
.createTableIfNotExists(connectionSource, BaseModel.class);
TableUtils
.createTableIfNotExists(connectionSource, User.class);
TableUtils
.createTableIfNotExists(connectionSource, Friend.class);
TableUtils
.createTableIfNotExists(connectionSource, Group.class);
sqLiteDatabase.setVersion(DB_VERSION);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase,
ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
updateVersion(connectionSource, oldVersion);
sqLiteDatabase.setVersion(newVersion);
} catch (Exception e) {
MyLogger.CLog().e(e.getMessage(), e);
}
}
/**
* 数据库表新增字段时使用
* @param sqLiteDatabase
* @param oldVersion
* @throws SQLException
*/
private void update2Version(SQLiteDatabase sqLiteDatabase,int oldVersion) throws SQLException {
if(oldVersion < DB_VERSION){
if (!checkColumnExist(sqLiteDatabase, "friend", "read")) {
Dao<Friend, String> childOne = getDao(Friend.class);
childOne.executeRaw("ALTER TABLE 'friend' ADD COLUMN friendName varchar;");
}
}
}
/**
* 更新数据库操作:先删除,在创建
* @param connectionSource
* @param oldVersion
*/
private void updateVersion(ConnectionSource connectionSource,int oldVersion) {
if (oldVersion < DB_VERSION) {
//删除表
try {
TableUtils
.dropTable(connectionSource, BaseModel.class, true);
TableUtils
.dropTable(connectionSource, User.class, true);
TableUtils