在android中,使用OrmLite可以快速的进行数据库开发,废话不说,直接上代码。
一 、 编写DatabaseHelper,需要继承OrmLiteSqliteOpenHelper类
package com.xxx.db
import java.util.HashMap;
import java.util.Map;
import java.sql.SQLException;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
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;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "videointercom.db";
private static final int DATABASE_VERSION = 3;
private Map<String, Dao> daos = new HashMap<String, Dao>();
private static DatabaseHelper instance;
/**
* userDao ,每张表对于一个
*/
// private Dao<user, integer=""> userDao;
private DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database,
ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, TableCallRecord.class);
TableUtils.createTable(connectionSource, TableIptable.class);
TableUtils.createTable(connectionSource, TableVillaParameter.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database,
ConnectionSource connectionSource, int oldVersion, int newVersion) {
try
{
TableUtils.dropTable(connectionSource, TableCallRecord.class, true);
TableUtils.dropTable(connectionSource, TableIptable.class, true);
TableUtils.dropTable(connectionSource, TableVillaParameter.class, true);
onCreate(database, connectionSource);
} catch (SQLException e)
{
e.printStackTrace();
}
}
/**
* 单例获取该Helper
*
* @param context
* @return
*/
public static synchronized DatabaseHelper getHelper(Context context) {
context = context.getApplicationContext();
if (instance == null) {
synchronized (DatabaseHelper.class) {
if (instance == null)
instance = new DatabaseHelper(context);
}
}
return instance;
}
public synchronized Dao getDao(Class clazz) throws SQLException {
Dao dao = null;
String className = clazz.getSimpleName();
if (daos.containsKey(className)) {
dao = daos.get(className);
}
if (dao == null) {
try {
dao = super.getDao(clazz);
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
daos.put(className, dao);
}
return dao;
}
/**
* 释放资源
*/
@Override
public void close() {
super.close();
for (String key : daos.keySet()) {
Dao dao = daos.get(key);
dao = null;
}
}
}
TableUtils.createTable为创建数据库表,在onCreate中进行。TableUtils.dropTable为更新数据库表,在onUpgrade中进行。
二 、数据库表的定义
package com.xxx.db;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable(tableName="T_IpTable")
public class TableIptable {
@DatabaseField(generatedId=true)
public int id;
@DatabaseField
public String ip;
@DatabaseField
public String addr;
public TableIptable(){
}
public TableIptable(String ip,String addr){
this.ip = ip;
this.addr = addr;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
三、 编写Dao类
package com.xxx.db;
import java.sql.SQLException;
import java.util.List;
import android.content.Context;
import com.j256.ormlite.dao.Dao;
public class TableIptableDao {
private Dao<TableIptable, Integer> iptableDao;
private DatabaseHelper helper;
@SuppressWarnings("unchecked")
public TableIptableDao(Context context) {
try {
helper = DatabaseHelper.getHelper(context);
iptableDao = helper.getDao(TableIptable.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
//添加一个TableCallRecord
public void add(TableIptable iptable) {
try {
iptableDao.create(iptable);
} catch (SQLException e) {
e.printStackTrace();
}
}
//通过ID获得一个TableCallRecord
public TableIptable get(int id) {
TableIptable iptable = null;
try
{
iptable = iptableDao.queryForId(id);
} catch (SQLException e)
{
e.printStackTrace();
}
return iptable;
}
//通过ID获得全部的TableCallRecord
public List<TableIptable> listByUserId(int userId) {
try
{
return iptableDao.queryBuilder().where().eq("user_id", userId).query();
} catch (SQLException e){
e.printStackTrace();
}
return null;
}
//查询TableCallRecord的所有记录
public List<TableIptable> queryAll(){
List<TableIptable> all = null;
try {
all = iptableDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return all;
}
//通过ID删除一条TableCallRecord
public void delete(int id){
try {
iptableDao.delete(iptableDao.queryForId(id));
} catch (SQLException e) {
e.printStackTrace();
}
}
//删除所有记录
public void deleteAll(){
try {
iptableDao.delete(queryAll());
} catch (SQLException e) {
e.printStackTrace();
}
}
public void update(TableIptable iptable){
try {
iptableDao.update(iptable);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}