数据库Dao类BaseDao(增删改)
2016-04-12 14:21
211 查看
package com.changim.patient.app.db; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.changim.patient.app.entity.BaseEntity; import java.lang.reflect.Field; import java.util.List; /** * 数据库操作基类 * * @author : yangxuzhong * @date : 2016-03-24 10:01 */ public class BaseDao { protected final String TAG = "DAO"; protected Context context; protected DBHelper dbHelper; public BaseDao(Context context) { this.context = context; dbHelper = new DBHelper(context); } public boolean insert(BaseEntity obj) { if (obj == null) { Log.d(TAG, "插入对象为空或者没有参数传入"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); try { ContentValues contentValues = new ContentValues(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } String tableName = obj.getClass().getSimpleName(); Log.d(TAG, "插入表" + tableName + ":[" + contentValues.toString() + "]"); long ret = db.insert(tableName, null, contentValues); Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",插入成功" : ",插入失败")); return ret > 0; } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "插入时出现错误!"); } finally { db.close(); } return false; } public boolean insert(List<? extends BaseEntity> list) { if (list != null && list.isEmpty()) { Log.d(TAG, "没有要插入的数据"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { long ret = 0; for (Object obj : list) { String tableName = obj.getClass().getSimpleName(); ContentValues contentValues = new ContentValues(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } Log.d(TAG, "插入表" + tableName + ":[" + contentValues.toString() + "]"); ret = db.insert(tableName, null, contentValues); } db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",插入成功" : ",插入失败")); return ret == list.size(); } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "插入时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } /** * 修改 * * @param obj * @param sWhere * @return */ protected boolean update(Object obj, String sWhere, String[] args) { if (obj == null || (sWhere == null && sWhere.length() > 0)) { Log.d(TAG, "修改对象为空或者没有参数传入"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); ContentValues contentValues = new ContentValues(); try { Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } String tableName = obj.getClass().getSimpleName(); Log.d(TAG, "修改表" + tableName + ":[" + contentValues.toString() + "]"); long ret = db.update(tableName, contentValues, sWhere, args); db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",修改成功" : ",修改失败")); return ret > 0; } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "修改时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } public boolean update(List<? extends BaseEntity> list, String sWhere, String[] args) { if (list != null && list.isEmpty()) { Log.d(TAG, "没有要修改的数据"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { long ret = 0; for (Object obj : list) { String tableName = obj.getClass().getSimpleName(); ContentValues contentValues = new ContentValues(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } Log.d(TAG, "修改表" + tableName + ":[" + contentValues.toString() + "]"); ret = db.update(tableName, contentValues, sWhere, args); } db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",修改成功" : ",修改失败")); return ret == list.size(); } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "插入时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } public boolean replace(BaseEntity obj) { if (obj == null) { Log.d(TAG, "更新对象为空或者没有参数传入"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); try { ContentValues contentValues = new ContentValues(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } String tableName = obj.getClass().getSimpleName(); Log.d(TAG, "更新表" + tableName + ":[" + contentValues.toString() + "]"); long ret = db.replace(tableName, null, contentValues); Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",更新成功" : ",更新失败")); return ret > 0; } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "插入时出现错误!"); } finally { db.close(); } return false; } public boolean replace(List<? extends BaseEntity> list) { if (list != null && list.isEmpty()) { Log.d(TAG, "没有要更新的数据"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { long ret = 0; for (Object obj : list) { String tableName = obj.getClass().getSimpleName(); ContentValues contentValues = new ContentValues(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String key = field.getName(); String value = field.get(obj) == null ? "" : field.get(obj).toString(); contentValues.put(key, value); } Log.d(TAG, "更新表" + tableName + ":[" + contentValues.toString() + "]"); ret = db.replace(tableName, null, contentValues); } db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",更新成功" : ",更新失败")); return ret == list.size(); } catch (IllegalAccessException e) { e.printStackTrace(); Log.d(TAG, "插入时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } /** * 删除本地用户表所有数据 */ protected boolean delete(Object obj, String sWhere, String[] args) { if (obj == null) { Log.d(TAG, "修改对象为空或者没有参数传入"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { String tableName = obj.getClass().getSimpleName(); Log.d(TAG, "删除表:" + tableName); int ret = db.delete(obj.getClass().getSimpleName(), sWhere, args); db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, String.format("受影响条数:%d, %s", ret, ret > 0 ? ",删除成功" : ",删除失败")); return ret > 0; } catch (Exception e) { e.printStackTrace(); Log.d(TAG, "删除时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } protected boolean clear(Object obj) { if (obj == null) { Log.d(TAG, "修改对象为空或者没有参数传入"); return false; } //获得一个操作Sqlite数据库对象 SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { String tableName = obj.getClass().getSimpleName(); Log.d(TAG, "清除表:" + tableName); db.execSQL(String.format("delete from %s", tableName)); db.setTransactionSuccessful();//事务成功标志 Log.d(TAG, "清除成功"); return true; } catch (Exception e) { e.printStackTrace(); Log.d(TAG, "清除时出现错误!"); } finally { db.endTransaction(); db.close(); } return false; } }
相关文章推荐
- MYSQL登录错误:mysqladmin: connect to server at 'localhost' failed
- SQL Server表的数据量大小查询
- MongoDB 空间定位(点) 与 距离检索
- Mysql安装
- 清理归档日志
- MySQL在线大表DDL操作
- mysql碰到unknown variable 'xxxx' 的解决方法
- oracle、MySQL、SQL Server的比较
- [PL/SQL工具]绿色版PLSQL工具登录时提示初始化失败,无法锁定OCI.dll错误
- sqlserver备份数据库
- SQL查询相关技术-3.更改显示报表行项目
- SQL大圣之路笔记——SQL 通过创建存储过程,查看当前进程情况(是否造成表锁死等)
- 画图解释 SQL join 语句
- mysql入门操作
- Mysql创建通用设备管理信息系统数据库
- MySQL表类型
- 数据库设计 Step by Step (8)——视图集成
- memcached完全剖析–1. memcached的基础
- Mysql与PostgreSql数据库学习笔记---打酱油的日子
- php yii框架使用MongoDb