Ormlite 数据库的使用

本文介绍了一个基于Android平台的SQLite数据库操作实现案例,通过单例模式管理数据库连接,并提供了增删改查等常用操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先添加依赖

public class DataBaseHelper extends OrmLiteSqliteOpenHelper {

    private static DataBaseHelper dbHelper;

    Context context;



    public DataBaseHelper(Context context) {

        super(context, "mshare_db", null, 1);
        this.context = context;
    }



    /**
     * 全局惟一一个DBHelper对象
     * 双锁的写法,双重检查[推荐用]
     */
    public static DataBaseHelper getDBHelperInstance(Context context) {

        if (dbHelper == null)
            synchronized (DataBaseHelper.class) {
                if (dbHelper == null)
                    dbHelper=new DataBaseHelper(context);
            }
        return dbHelper;
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {

        try {
            //创建对应的一张表,保存搜索记录
            TableUtils.createTable(connectionSource, SearchHistoryBean.class);
            //保存登陆注册信息
            TableUtils.createTable(connectionSource, LoginResultBean.class);
            ToastUtil.toast_debug("创建数据库及表成功");


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }



    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {

    }
}

第二步 创建DataBaseHelper

/**
 * Created by Administrator on 2017/8/4.
 * TODO 封装出一个通用的Dao类,根据cls来得到对应类的Dao.
 */
public class UserDao {

    private static UserDao userDao;

    public DataBaseHelper helper;

    //// TODO: 2017/11/4 <?,?>
    private Dao<LoginResultBean, ?> dao;



    private UserDao(Context context) {

        if (helper == null)
            helper = DataBaseHelper.getDBHelperInstance(context);

    }



    /**
     * 对外只提供一个Dao实例对象使用
     */
    public static UserDao getDaoInstance(Context context) {

        if (userDao == null) {
            synchronized (HistoryDao.class) {
                if (userDao == null) {
                    userDao = new UserDao(context.getApplicationContext());
                }
            }
        }
        return userDao;
    }



    public void releaseHelper() {

        if (helper != null) {
            OpenHelperManager.releaseHelper();
            helper = null;
        }
    }



    public int insert(LoginResultBean bean) {

        int result = -1;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            result = dao.create(bean);

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }



    public int delete(LoginResultBean bean) {

        int result = -1;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            result = dao.delete(bean);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }



    public int update(LoginResultBean bean) {

        int result = -1;
        try {
            if (dao == null)

                dao = helper.getDao(LoginResultBean.class);
            result = dao.update(bean);
            System.out.println(result+"===============<");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }



    public void resetAllUsersStatus() {

        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            dao.updateBuilder().updateColumnValue(Constants.isCurrentUser, false).update();//// TODO: 2017/10/17  
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }



    public void resetAllUserProcessingState() {

        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            dao.updateBuilder().updateColumnValue(Constants.isProcessing,false).update();
        } catch (SQLException e) {
            e.printStackTrace();
            //TODO :应该要注意处理异常情况
        }
    }



    /**
     * 按手机号是否相同来判断
     */
    public boolean contain(LoginResultBean bean) {

        boolean isContained = false;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            LoginResultBean result =
                    dao.queryBuilder().where().eq(Constants.PhoneNumber, bean.getPhoneNumber()).queryForFirst();//查不到返回null
            if (result != null)
                Log.d("tag", "contain: 查询到的已经存在的对象为" + result.toString());
            isContained = result != null;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return isContained;
    }



    public int queryId(LoginResultBean bean) {

        int id = -1;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            LoginResultBean resultBean = dao.queryBuilder().where().eq(Constants.PhoneNumber, bean.getPhoneNumber()).queryForFirst();
            if (resultBean != null)
                id = resultBean.getId();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return id;

    }



    public LoginResultBean queryWithPhoneNumber(String phoneNumber) {

        LoginResultBean resultBean = null;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            resultBean = dao.queryBuilder().where().eq(Constants.PhoneNumber, phoneNumber).queryForFirst();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return resultBean;
    }



    /**
     * 查询出当前表中哪个用户是默认自动登陆用户,即 isCurrentUser=true;
     */
    public LoginResultBean query() {

        LoginResultBean resultBean = null;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            resultBean = dao.queryBuilder().where().eq(Constants.isCurrentUser, true).queryForFirst();//查不到返回null
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return resultBean;
    }

    /**
     * 查询出当前表中哪个用户是默认自动登陆用户,即 isCurrentUser=true;
     */
    public LoginResultBean queryCurrentProcessingUser() {

        LoginResultBean resultBean = null;
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            resultBean = dao.queryBuilder().where().eq(Constants.isProcessing, true).queryForFirst();//查不到返回null\
            System.out.println("======================[]"+resultBean);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return resultBean;
    }





    public boolean updateVerificationState() {
        try {
            if (dao == null)
                dao = helper.getDao(LoginResultBean.class);
            LoginResultBean query = Integer.valueOf(GlobalConfig.AppType)==1 ? queryCurrentProcessingUser():query();
            query.setCertificationStatus(1);
            int rows = dao.update(query);
            // TODO: 2017/8/8 为什么这个SQL写法不正确呢?

            return rows != 0;
        } catch (SQLException e) {
            e.printStackTrace();
            //// TODO: 2017/10/30 need to handle the Exception!
        }
        return false;
    }
}

第四步 创建自己使用的类 (处理的逻辑)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值