搭建自己的SQLiteDataBase框架(二)
2016-11-16 16:50
363 查看
搭建自己的SQLiteDataBase框架(二)
标签(空格分隔): 未分类基本数据类型的增删改查(CRUD)
删除:
private void delete(String tableName, String where, String[] args) { db.delete(tableName, where, args); } public void delete(String id) { try { delete(mTableName, mIdName + "=?", new String[]{id}); //delete related association data for (Field field : mForeignds) { delete(DBUtils.getAssociationTableName(clz, field.getName()), "pk1=?", new String[]{id}); } } catch (Exception e) { System.out.println(e.toString()); } } public <T> void delete(T t) { try { String id = (String) id_field_.get(t); delete(id); } catch (Exception e) { e.printStackTrace(); System.out.println(e.toString()); } }
2. 增改
public <T> void newOrUpdate(T t) { ContentValues contentValues = new ContentValues(); try { String idValue = (String) id_field_.get(t); for (Field field : fields) { if (field.isAnnotationPresent(Column.class)) { field.setAccessible(true); Class<?> clz = field.getType(); if (clz == String.class) { System.out.println("key:" + DBUtils.getColumnName(field) + ",value:" + field.get(t).toString()); contentValues.put(DBUtils.getColumnName(field), field.get(t).toString()); } else if (clz == int.class || clz == Integer.class) { contentValues.put(DBUtils.getColumnName(field), field.getInt(t)); } else { //TODO } } } } catch (Exception e) { e.printStackTrace(); System.out.println("newOrUpdate:" + e.toString()); } newOrUpdate(mTableName, contentValues); } private void newOrUpdate(String tableName, ContentValues contentValues) { System.out.println(tableName + ",size:" + contentValues.size()); db.replace(tableName, null, contentValues); }
3. 查询
public T queryById(String id) { Cursor cursor = rawQuery(mTableName, mIdName + "=?", new String[]{id}); T t = null; if (cursor.moveToNext()) { try { t = clz.newInstance(); for (Field field : fields) { if (field.isAnnotationPresent(Column.class)) { field.setAccessible(true); Class<?> clazz = field.getType(); if (clazz == int.class || clazz == Integer.class) { field.setInt(t, cursor.getInt(cursor.getColumnIndex(DBUtils.getColumnName(field)))); } else if (clazz == String.class) { field.set(t, cursor.getString(cursor.getColumnIndex(DBUtils.getColumnName(field)))); } else { //TODO } } } } catch (Exception e) { e.printStackTrace(); System.out.println("queryById:" + e.toString()); } } return t; }
以上就是基本的增删改查实现,看一下测试结果
public void add() { Developer developer = new Developer(); developer.setId("00001"); developer.setName("Stay"); developer.setAge(17); DBManager.getInstance().getDao(Developer.class).newOrUpdate(developer); } public void queryCompanyById() { Developer developer = DBManager.getInstance().getDao(Developer.class).queryById("00001"); if (developer != null) { System.out.println(developer.toString()); } } 11-16 16:46:05.843 17260-17260/? I/System.out: id:00001,name:Stay,age:17
以上就是普通的增删该查了
相关文章推荐
- 搭建自己的SQLiteDataBase框架(五)
- 搭建自己的SQLiteDataBase框架(三)
- 搭建自己的SQLiteDataBase框架(四)
- 搭建自己的SQLiteDataBase框架(-)
- 总结自己重新搭建SSM框架中遇到的几种奇葩问题
- 创业互联网公司如何搭建自己的技术框架
- Windows环境搭建Web自己主动化測试框架Watir(基于Ruby)
- 搭建自己的框架之2:MVP+Rxjava2,封装自己的mvp框架
- 01 自己搭建类似vue-cli 框架
- 自己动手搭建ava通用开发框架之三—通用权限模型建立
- 手把手教你如何搭建一个自己的安卓快速开发框架之BaseActivity(一)
- 搭建自己的框架之3:项目中引入Dagger2&Dagger.android
- 搭建自己的第一个SpringBoot框架(1)
- 自己动手搭建 SSM框架——(Spring+SpringMVC+MyBatis)问题总结
- 搭建SSM框架,自己的一些总结
- REST+Jersey学习(三)----自己搭个环境:REST+EJB+JPA 框架在 Eclipse+TomEE 开发环境搭建
- Android学习之——自己搭建Http框架(2)——框架扩展
- 练习自己搭建框架(1)BaseAction
- 使用Retrofit搭建自己的网络请求框架
- OK6410之uboot移植(3)——搭建自己的开发板项目框架(make smdk6410_config)