搭建自己的SQLiteDataBase框架(二)
来源:互联网 发布:陕西天诚软件 怎么样 编辑:程序博客网 时间:2024/05/22 18:28
搭建自己的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
以上就是普通的增删该查了
0 0
- 搭建自己的SQLiteDataBase框架(二)
- 搭建自己的SQLiteDataBase框架(-)
- 搭建自己的SQLiteDataBase框架(三)
- 搭建自己的PHP框架心得(二)
- 搭建自己的PHP框架
- 搭建自己的MVC框架
- 搭建自己的MVP框架
- ssh2框架的搭建(二)
- SSH框架的搭建(二)
- 搭建SSH框架(自己做项目时的总结)
- 如何搭建自己的自动化测试框架
- 使用PHP搭建自己的MVC框架
- 使用PHP搭建自己的MVC框架
- 使用PHP搭建自己的MVC框架
- 使用PHP搭建自己的MVC框架
- 使用php搭建自己的MVC框架
- 使用PHP搭建自己的MVC框架
- 使用PHP搭建自己的MVC框架
- AngularJS中单选按钮和多选框的动态绑定
- mach_absolute_time () 与 CACurrentMediaTime() 计算时间 间隔 并转为秒
- 使用tornado如何实现请求异步非阻塞?
- 计算机系统原理之程序是怎么运行的
- SQL2005语句大全
- 搭建自己的SQLiteDataBase框架(二)
- jsp页面带多个参数
- Delphi 计算指定目录下所有文件的大小(遍历文件夹所有文件及目录)
- OkHttpUtils一个专注于让网络请求更简单的框架
- JavaScript 循环
- selenium webdriver by xpath 定位元素
- Event1-事件
- 第一课:Java web之HTML
- 签到APP:android入门级小项目,Node.js 提供服务端接口