• 数据库Dao类BaseDao(增删改)


    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;
        }
    
    }
  • 相关阅读:
    用curl发起https请求
    curl: (60) SSL certificate problem: unable to get local issuer certificate 错误
    单例模式
    黑窗口命令
    推荐的php安全配置选项
    sublime配置大全
    数据库三范式最简单最易记的解释
    linux 下安装python3
    restframwork 接口及优化
    Django的orm练习---多表查询
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5382526.html
Copyright © 2020-2023  润新知