美文网首页
Android数据库框架的使用——OrmLite

Android数据库框架的使用——OrmLite

作者: fengcz | 来源:发表于2018-11-21 22:59 被阅读91次

    使用时直接继承OrmLiteSqliteOpenHelper

    public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    
        // db名称
        private static final String TABLE_NAME = "name.db";
        // db版本
        private static final int DB_VERSION = 1;
    
    
        private Map<String, Dao> daos = new HashMap<String, Dao>();
    
        private DatabaseHelper(Context context) {
            super(context, TABLE_NAME, null, DB_VERSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase database,
                             ConnectionSource connectionSource) {
            try {
                TableUtils.createTable(connectionSource, GroupChat.class)
    
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    //数据库升级时会执行该方法
        @Override
        public void onUpgrade(SQLiteDatabase database,
                              ConnectionSource connectionSource, int oldVersion, int newVersion) {
            // 升级联系人表,增加姓名拼音与拼音简写两个字段
            if (newVersion > 1 && oldVersion == 1) {
                String addPYSQL = "ALTER TABLE tb_contact ADD pinyin VARCHAR DEFAULT null;";
                String addSPYSQL = "ALTER TABLE tb_contact ADD spinyin VARCHAR DEFAULT null;";
                database.beginTransaction();
                try {
                    database.execSQL(addPYSQL);
                    database.execSQL(addSPYSQL);
                    database.setTransactionSuccessful();
                } finally {
                    database.endTransaction();
                }
            }
    
        }
    
        private static DatabaseHelper instance;
    
        /**
         * 单例获取该Helper
         *
         * @param context
         * @return
         */
        public static synchronized DatabaseHelper getHelper(Context context) {
            context = context.getApplicationContext();
            if (instance == null) {
                synchronized (DatabaseHelper.class) {
                    if (instance == null)
                        instance = new DatabaseHelper(context);
                }
            }
    
            return instance;
        }
    
        /**
         * 获取Dao
         *
         * @param clazz
         * @return
         * @throws SQLException
         */
        public synchronized Dao getDao(Class clazz) throws SQLException {
            Dao dao = null;
            String className = clazz.getSimpleName();
    
            if (daos.containsKey(className)) {
                dao = daos.get(className);
            }
            if (dao == null) {
                dao = super.getDao(clazz);
                daos.put(className, dao);
            }
            return dao;
        }
    
        /**
         * 释放资源
         */
        @Override
        public void close() {
            super.close();
    
            for (String key : daos.keySet()) {
                Dao dao = daos.get(key);
                dao = null;
            }
        }
    
    }
    
    package com.feng.ormlite;
    
    import com.j256.ormlite.field.DatabaseField;
    import com.j256.ormlite.table.DatabaseTable;
    
    /**
     * Created by fengcz on 2018/11/24.
     */
    @DatabaseTable(tableName = "group")
    public class GroupChat {
        @DatabaseField(generatedId = true, columnName = "id", unique = true)
        private int id;
        @DatabaseField(columnName = "groupName", canBeNull = true)
        private String groupName;
        @DatabaseField(columnName = "groupId", canBeNull = true)
        private String groupId;
    
        /**
         * 此构造方法必须存在
         */
        public GroupChat() {
        }
    
        /**
         * 有这个构造方法必须重写上一个参数为空的构造函数
         *
         * @param groupName
         * @param groupId
         */
        public GroupChat(String groupName, String groupId) {
            this.groupName = groupName;
            this.groupId = groupId;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getGroupName() {
            return groupName;
        }
    
        public void setGroupName(String groupName) {
            this.groupName = groupName;
        }
    
        public String getGroupId() {
            return groupId;
        }
    
        public void setGroupId(String groupId) {
            this.groupId = groupId;
        }
    }
    
    
    • GroupDao进行增删改查
    package com.feng.ormlite;
    
    import android.content.Context;
    import android.widget.Toast;
    
    import com.j256.ormlite.dao.Dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    /**
     * Created by fengcz on 2018/11/24.
     */
    
    public class GroupChatDao {
        private Context context;
        private Dao<GroupChat, Integer> collectionDaoOpe;
        private DatabaseHelper helper;
    
        public GroupChatDao(Context context) {
            this.context = context;
            try {
                helper = DatabaseHelper.getHelper(context.getApplicationContext());
                collectionDaoOpe = helper.getDao(GroupChat.class);
    
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 通过字段查询
         *
         * @param groupNmae
         * @return
         */
    
        public List<GroupChat> queryByGroupName(String groupNmae) {
            try {
                return collectionDaoOpe.queryBuilder().where().eq("groupName", groupNmae).query();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 查询全部
         *
         * @return collections of data
         */
        public List<GroupChat> queryGroupAll() {
            try {
                return collectionDaoOpe.queryForAll();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * insert a new data
         * @param user user
         */
        public void addGroup(GroupChat user) {
            try {
                collectionDaoOpe.create(user);
                Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();
            } catch (SQLException e) {
                e.printStackTrace();
                Toast.makeText(context, "添加失败", Toast.LENGTH_SHORT).show();
            }
        }
    
        public void delete() {
            try {
                collectionDaoOpe.deleteBuilder().delete();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    
    }
    
    

    具体使用

    GroupChatDao chatDao = new GroupChatDao(this);

    //增加一条数据
    GroupChat chat = new GroupChat(name, id);
    chatDao.addGroup(chat);
    

    相关文章

      网友评论

          本文标题:Android数据库框架的使用——OrmLite

          本文链接:https://www.haomeiwen.com/subject/xoghqqtx.html