基于ormlite框架SQLite数据库的使用
来源:互联网 发布:中国出口印度的数据 编辑:程序博客网 时间:2024/05/30 05:22
一、简介
ORM:对象关系映射,是一种程序设计技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换。
优点:文档较全面,社区活跃,有好的维护,使用简单,易上手
缺点:基于反射和注解的原理,效率较低
二、步骤
- 导入包
compile 'com.j256.ormlite:ormlite-core:4.41'compile 'com.j256.ormlite:ormlite-android:4.41'- 创建基类DataBaseHelper
- 创建基类BaseDao类
- 创建数据源实体Item
- 创建操作数据库表格的Dao类
三、使用
DataBaseHelper:
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {public ArrayList<Class> tableList=new ArrayList<Class>(); private static final String DATABASE_NAME = "Qiao.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context){ //tableList=list; super(context, DATABASE_NAME, null, DATABASE_VERSION); InitTables(); } private void InitTables() {// TODO Auto-generated method stub tableList.add(ContactPersonItem.class); tableList.add(AddrListItem.class); (添加数据表格) }/** * 创建SQLite数据库 */ @Override public void onCreate(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) { try { for (int i = 0; i < tableList.size(); i++) {TableUtils.createTable(connectionSource, tableList.get(i));} //TableUtils.createTable(connectionSource, PointFull.class); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Unable to create datbases", e); } } /** * 更新SQLite数据库 */ @Override public void onUpgrade( SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource, int oldVer, int newVer) { try { for (int i = 0; i < tableList.size(); i++) {TableUtils.dropTable(connectionSource, tableList.get(i), true);} // TableUtils.dropTable(connectionSource, PointFullItem.class, true); onCreate(sqliteDatabase, connectionSource); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Unable to upgrade database from version " + oldVer + " to new " + newVer, e); } } /** * Close the database connections and clear any cached DAOs. */ @Override public void close() { super.close(); } }
BaseDao:public abstract class BaseDao<T, Integer> { protected DatabaseHelper mDatabaseHelper; protected Context mContext; public BaseDao(Context context) { mContext = context; getHelper(); } public <D extends Dao<T, ?>, T> D getHelpergetDao(Class<T> clazz) throws SQLException { return getHelper().getDao(clazz); } public ConnectionSource getHelpergetConnectionSource() { return getHelper().getConnectionSource(); } public DatabaseHelper getHelper() { if (mDatabaseHelper == null) { try { mDatabaseHelper = OpenHelperManager.getHelper(mContext, DatabaseHelper.class); } catch (Exception e) { System.err.println(e); } } return mDatabaseHelper; } public abstract String FileName(); public abstract Dao<T, Integer> getDao() throws SQLException; public abstract void ClearTable() throws SQLException; public int save(T t) throws SQLException { return getDao().create(t); } public T SaveOrUpdate(T t) throws SQLException { return (T) getDao().createOrUpdate(t); } public List<T> queryForMatching(T t) throws SQLException { return getDao().queryForMatching(t); } public T saveAndGetValue(T t) throws SQLException { int result=getDao().create(t); return t; } public List<T> query(PreparedQuery<T> preparedQuery) throws SQLException { Dao<T, Integer> dao = getDao(); return dao.query(preparedQuery); } public List<T> query(String attributeName, String attributeValue) throws SQLException { QueryBuilder<T, Integer> queryBuilder = getDao().queryBuilder(); queryBuilder.where().eq(attributeName, attributeValue); PreparedQuery<T> preparedQuery = queryBuilder.prepare(); return query(preparedQuery); } public List<T> query(String[] attributeNames, String[] attributeValues) throws SQLException{ if (attributeNames.length != attributeValues.length) { //throw new InvalidParamsException("params size is not equal"); } QueryBuilder<T, Integer> queryBuilder = getDao().queryBuilder(); Where<T, Integer> wheres = queryBuilder.where(); for (int i = 0; i < attributeNames.length; i++) { wheres.eq(attributeNames[i], attributeValues[i]); } PreparedQuery<T> preparedQuery = queryBuilder.prepare(); return query(preparedQuery); } public List<T> queryAll() throws SQLException { // QueryBuilder<T, Integer> queryBuilder = getDao().queryBuilder(); // PreparedQuery<T> preparedQuery = queryBuilder.prepare(); // return query(preparedQuery); Dao<T, Integer> dao = getDao(); return dao.queryForAll(); } public T queryById(String idName, String idValue) throws SQLException { List<T> lst = query(idName, idValue); if (null != lst && !lst.isEmpty()) { return lst.get(0); } else { return null; } } public List<T> queryByIds(String idName, String idValue) throws SQLException { List<T> lst = query(idName, idValue); if (null != lst && !lst.isEmpty()) { return lst; } else { return null; } } public int delete(PreparedDelete<T> preparedDelete) throws SQLException { Dao<T, Integer> dao = getDao(); return dao.delete(preparedDelete); } public int delete(T t) throws SQLException { Dao<T, Integer> dao = getDao(); return dao.delete(t); } public int delete(List<T> lst) throws SQLException { Dao<T, Integer> dao = getDao(); return dao.delete(lst); } public int delete(String[] attributeNames, String[] attributeValues) throws SQLException { List<T> lst = query(attributeNames, attributeValues); if (null != lst && !lst.isEmpty()) { return delete(lst); } return 0; } public int deleteById(String idName, String idValue) throws SQLException { T t = queryById(idName, idValue); if (null != t) { return delete(t); } return 0; } public int update(T t) throws SQLException { Dao<T, Integer> dao = getDao(); return dao.update(t); } public boolean isTableExsits() throws SQLException { return getDao().isTableExists(); } public long countOf() throws SQLException { return getDao().countOf(); } public List<T> query(Map<String, Object> map) throws SQLException { QueryBuilder<T, Integer> queryBuilder = getDao().queryBuilder(); if (!map.isEmpty()) { Where<T, Integer> wheres = queryBuilder.where(); Set<String> keys = map.keySet(); ArrayList<String> keyss = new ArrayList<String>(); keyss.addAll(keys); for (int i = 0; i < keyss.size(); i++) { if (i == 0) { wheres.eq(keyss.get(i), map.get(keyss.get(i))); } else { wheres.and().eq(keyss.get(i), map.get(keyss.get(i))); } } } PreparedQuery<T> preparedQuery = queryBuilder.prepare(); return query(preparedQuery); } public List<T> query(Map<String, Object> map, Map<String, Object> lowMap, Map<String, Object> highMap) throws SQLException { QueryBuilder<T, Integer> queryBuilder = getDao().queryBuilder(); Where<T, Integer> wheres = queryBuilder.where(); if (!map.isEmpty()) { Set<String> keys = map.keySet(); ArrayList<String> keyss = new ArrayList<String>(); keyss.addAll(keys); for (int i = 0; i < keyss.size(); i++) { if (i == 0) { wheres.eq(keyss.get(i), map.get(keyss.get(i))); } else { wheres.and().eq(keyss.get(i), map.get(keyss.get(i))); } } } if (!lowMap.isEmpty()) { Set<String> keys = lowMap.keySet(); ArrayList<String> keyss = new ArrayList<String>(); keyss.addAll(keys); for (int i = 0; i < keyss.size(); i++) { if(map.isEmpty()){ wheres.gt(keyss.get(i), lowMap.get(keyss.get(i))); }else{ wheres.and().gt(keyss.get(i), lowMap.get(keyss.get(i))); } } } if (!highMap.isEmpty()) { Set<String> keys = highMap.keySet(); ArrayList<String> keyss = new ArrayList<String>(); keyss.addAll(keys); for (int i = 0; i < keyss.size(); i++) { wheres.and().lt(keyss.get(i), highMap.get(keyss.get(i))); } } PreparedQuery<T> preparedQuery = queryBuilder.prepare(); return query(preparedQuery); }}实体Item:更改一下序列化IDpublic class AddrListItem {private static final long serialVersionUID = -554466990987104L;@DatabaseField(allowGeneratedIdInsert = true, generatedId = true)private int ID;@DatabaseField(defaultValue = "")private String addr;@DatabaseField(defaultValue = "")private double lat;@DatabaseField(defaultValue = "")private double lng;public AddrListItem() {}public AddrListItem(String name,double lat,double lng) {super();this.addr = name;this.lat = lat;this.lng = lng;}public static long getSerialVersionUID() {return serialVersionUID;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}public double getLat() {return lat;}public void setLat(double lat) {this.lat = lat;}public double getLng() {return lng;}public void setLng(double lng) {this.lng = lng;}public int getID() {return ID;}public void setID(int ID) {this.ID = ID;}}Dao类:
public class AddrListDao extends BaseDao<AddrListItem, Integer> { public AddrListDao(Context context) { super(context); } @Override public Dao<AddrListItem, Integer> getDao() throws SQLException { return getHelpergetDao(AddrListItem.class); } @Override public void ClearTable() throws SQLException { TableUtils.clearTable(getHelpergetConnectionSource(), AddrListItem.class); // TODO Auto-generated method stub } @Override public String FileName() { // TODO Auto-generated method stub return "地址搜索历史记录"; }}
四、增删改查
存数据库:
//存数据库AddrListItem addrListItem = new AddrListItem();addrListItem.setAddr(toAddr);addrListItem.setLat(stopLat);addrListItem.setLng(stopLng);AddrListDao addrListDao = new AddrListDao(HomeActivity.this);try {//if(addrListDao.countOf()>5){//addrListDao.ClearTable();//}addrListDao.save(addrListItem);} catch (SQLException e) {e.printStackTrace();}
查询:private void LoadListView(){PhoneListao phoneListao=new PhoneListao(getActivity());try {//mdao.ClearTable();清除数据库表格contactList.clear();contactList=phoneListao.queryAll();} catch (SQLException e) {//e.printStackTrace();}}
阅读全文
0 0
- 基于ormlite框架SQLite数据库的使用
- 使用ORMLite(框架)创建SQLite数据库
- Android基于ormlite框架的数据库加密
- SQLite数据库框架ORMLite与GreenDao的简单比较
- SQLite数据库框架ORMLite与GreenDao的简单比较
- SQLite数据库框架ORMLite与GreenDao的简单比较
- SQLite数据库框架ORMLite与GreenDao的简单比较
- SQLite数据库框架ORMLite与GreenDao的简单比较
- SQLite数据库框架ORMLite与GreenDao的简单比较
- OrmLite数据库框架的集成及使用
- ORMLite数据库框架的简单使用
- android数据库框架ormlite的使用
- Android 数据库框架OrmLite的常规使用
- OrmLite 框架的使用
- android的ORMLite的sqlite自定义框架
- 开源框架-ormlite-android数据库的使用
- Android数据库框架-----ORMLite关联表的使用
- android Sqlite数据库对象模型ORMLite框架学习
- Google 最高级别工程师的教育梦
- 银行家算法C,Java实现
- Java 内存模型 JMM 浅析
- 面向对象--单例设计模式(2)
- eigen使用
- 基于ormlite框架SQLite数据库的使用
- c#图片旋转,保存图片的时候一定要选择图片保存的格式
- 配置OpenGL开发环境(vs2015)
- javascript 高级系列之闭包(closure)
- 知识积累 jpa关键字
- 6-12 二叉搜索树的操作集(30 point(s))
- JavaWeb编码问题
- nodeJS ——nodeJS基础知识思维导读
- CG绘画基础教程之素描光影关系