android中OrmLite数据库编程实例讲解

来源:互联网 发布:jdk windows x64 下载 编辑:程序博客网 时间:2024/05/29 05:08

在android中,使用OrmLite可以快速的进行数据库开发,废话不说,直接上代码。


一 、 编写DatabaseHelper,需要继承OrmLiteSqliteOpenHelper类


package com.xxx.dbimport 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);}@Overridepublic 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();}}@Overridepublic 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 blocke.printStackTrace();}daos.put(className, dao);}return dao;}/** * 释放资源 */@Overridepublic 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;@DatabaseFieldpublic String ip;@DatabaseFieldpublic 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();}}    //添加一个TableCallRecordpublic 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 blocke.printStackTrace();} }   }


0 0
原创粉丝点击