您的位置:首页 > 移动开发 > Android开发

android数据库框架ormlite的使用

2016-10-20 10:05 603 查看
开篇:相信大家在android开发过程中大多数项目都需要使用android的数据库sqllite,但是每次直接利用android提供的api来增删改查数据表有点繁琐,做javaweb的都知道有一款数据库框架叫Hibernate ,android端同样有类似这样的框架,下面就给大家介绍这款框架ormlite的使用。orm就是对象关系映射的意思,就是讲关系性质的数据表转化成java的的对象来操作,极大的符合我们java开发人员的思维模式,也免去了不少重复性的代码编写。

1.下载所需jar包

到http://ormlite.com/releases/ 该网站下载所需jar包,android端使用需要下载以下两个jar包(红框圈出来的),一个是ormlite-core-5.0.jar(该包是ormlite的核心代码包),一个是ormlite-android-5.0.jar(该包是在android工程中所需的jar包,如果在普通java工程或者javaweb工程中则使用核心包和另一个jar包ormlite-jdbc-5.0.jar)。




2.新建android工程,考入jar包

新建工程,在libs目录下考入刚下载的两个jar包,如下图所示:



3.接下来编写一个简单的存储并读取用户信息的代码。
  (1)先编写userbean类,该类的字段和表字段一一对应,代码如下:
package com.example.androidormlitedemo;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
//用注解标示该类和表user来映射,如果不写tableName则会默认用该类的类名来当做表名。
@DatabaseTable(tableName="user")
public class UserBean {
//用注解标示字段和表中的字段来对应,id=true表示该字段为主键。
@DatabaseField(id=true)
private int uid;
//普通字段则不用写括号
@DatabaseField
private String uname;
@DatabaseField
private int age;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}


(2)编写DatabaseHelper类继承OrmLiteSqliteOpenHelper:
package com.example.androidormlitedemo;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
// 数据库名称,会在程序的目录中生成test_db.db数据库文件
public static String DATABASE_NAME = "test_db";
// 数据库version
private static final int DATABASE_VERSION = 1;

public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public DatabaseHelper(Context context, String databaseName, CursorFactory factory, int databaseVersion) {
super(context, databaseName, factory, databaseVersion);

}
// 初次运行程序会执行该onCreate方法,如果不是初次运行程序则不会执行该方法,防止重复建表。
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
//建立User表
TableUtils.createTable(connectionSource, UserBean.class);
} catch (SQLException e) {
e.printStackTrace();
}

}
//如果不是初次运行并且DATABASE_VERSION数值增加的时候,则会执行该方法,可以在该方法中删除原来的表并建立新表,在要修改数据表结构的时候使用。
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
TableUtils.dropTable(connectionSource, UserBean.class, true);
onCreate(sqLiteDatabase, connectionSource);
} catch (SQLException e) {
e.printStackTrace();
}
}

/**
* 释放 DAO
*/
@Override
public void close() {
super.close();
}

}


(3)编写dao类,先简单的写一个存储方法和一个查询方法。
package com.example.androidormlitedemo;

import java.sql.SQLException;

import android.content.Context;

import com.j256.ormlite.android.apptools.OpenHelperManager;
import com.j256.ormlite.dao.Dao;

public class UserDao {
private Dao<UserBean, Integer> dao;

public UserDao(Context context) {
DatabaseHelper dbHelper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
try {
dao = dbHelper.getDao(UserBean.class);
} catch (SQLException e) {
e.printStackTrace();
}
}

// 保存一条用户信息
public void savaUser(UserBean bean) {
try {
// 如果表中没有该用户则保存,根据主键是否相同来标示是否是同一用户
dao.createIfNotExists(bean);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//根据id获取用户信息
public UserBean getUserById(int id) {
try {
return dao.queryForId(id);
} catch (SQLException e) {
e.printStackTrace();
return null;
}

}

}


(4)使用上面创建的dao来保存一个用户并读取改用户信息,示例代码如下:
package com.example.androidormlitedemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.text);

//模拟创建一个用户信息
UserBean userBean = new UserBean();
userBean.setUid(1);
userBean.setUname("张全蛋");
userBean.setAge(25);

//创建dao 初次使用的时候表会自动创建,根据UserBean的字段映射成表
UserDao userDao = new UserDao(this);
//保存用户到表中
userDao.savaUser(userBean);

//从表中查询信息
UserBean userByfind = userDao.getUserById(1);
//显示查询的用户名
textView.setText(userByfind.getUname());

}
}


(5)完成,运行程序即可。
4.总结,这是ormlite的简单使用,还有更多功能,详细查看官方api,可以下载doc包,或者源码包,如下图:



5.完整Demo下载地址:http://pan.baidu.com/s/1pL3xGaJ
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息