* 更新数据库表,先删除表,然后创建

先看效果图,对数据进行了增删改查

jar包下载

ormlite包下载地址:http://ormlite.com/releases/

ormlite-android-sqlcipher.jar和sqlcipher.jar下载地址:https://download.csdn.net/download/chensenli/10766390
配置

导入依赖,在build.gradle中加入

implementation files('libs/ormlite-android-sqlcipher-4.48.jar')
implementation files('libs/ormlite-core-4.49.jar')
implementation files('libs/sqlcipher.jar')

so文件的引入,在build.gradle中加入

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
}

 
 具体代码

    PersonModel实体类:存储Person表中的数据。get和set方法没有贴出来。

    DatabaseTable:指定数据库表名称为Person

    DatabaseField:数据库的字段

    此实体类的两个字段name和hobby分别名字个兴趣

@DatabaseTable(tableName = "Person")
public class PersonModel implements Serializable {
    public static final String NAME = "name";
    public static final String HOBBY = "bobby";

    @DatabaseField(generatedId = true)
    private int id;

    @DatabaseField(columnName = NAME)
    private String name;

    @DatabaseField(columnName = HOBBY)
    private String hobby;
    
}

    数据库管理类

public class MyHelper extends OrmLiteSqliteOpenHelper {
    private static final String DATABASE_NAME = "person_database.db";
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_PASSWORD = "123456";
    private static MyHelper myHelper;
    private static Dao<PersonModel,Integer> helperDao = null;

    /**
     * 初始化MyHelper
     */
    public MyHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION,(InputStream) null,DATABASE_PASSWORD);
    }

    /**
     * 单例模式,获取MyHelper对象
     */
    public static synchronized MyHelper getHelper(Context context){
        if(myHelper == null){
            myHelper = new MyHelper(context);
        }
        return myHelper;
    }

    /**
     * 创建数据库表
     */
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
        try {
            TableUtils.createTable(connectionSource,PersonModel.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 更新数据库表,先删除表,然后创建
     */
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
        try {
            TableUtils.dropTable(connectionSource,PersonModel.class,true);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        onCreate(sqLiteDatabase, connectionSource);
    }
    @Override
    public void close() {
        super.close();
        setHelperDao(null);
    }

    public static void setHelperDao(Dao<PersonModel, Integer> helperDao) {
        MyHelper.helperDao = helperDao;
    }

    /**
     * 获取ormlite的DAO对象
     * @return
     */
    public Dao<PersonModel, Integer> getHelperDao(Class clazz) {
        if(helperDao == null){
            try {
                helperDao = getDao(clazz);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return helperDao;
    }
}

    PersonDao类:操作Person表中的数据

public class PersonDao {
    private static PersonDao personDao;
    private static MyHelper myHelper;
    private static Dao<PersonModel,Integer> helperDao;
    private Context context;

    public PersonDao(){
        context = App.getContext();
        myHelper =MyHelper.getHelper(context);
        helperDao = myHelper.getHelperDao(PersonModel.class);
    }
    public static synchronized PersonDao getPersonDao(){
        if(personDao == null){
            personDao = new PersonDao();
        }
        return personDao;
    }
    public void addPerson(PersonModel model){
        try {
            helperDao.create(model);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public List<PersonModel> findPersonByHobby(String hobby){
        List<PersonModel> list = null;
        QueryBuilder<PersonModel, Integer> qb = helperDao.queryBuilder();
        try {
            qb.where().eq(PersonModel.HOBBY,hobby);
            list = qb.query();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if(list == null){
            list = new ArrayList<>();
        }
        return list;
    }
    public List<PersonModel> findAllPerson(){
        List<PersonModel> list = null;
        QueryBuilder<PersonModel,Integer> qb = helperDao.queryBuilder();
        try {
            list = qb.query();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if(list == null){
            list = new ArrayList<>();
        }
        return list;
    }
    public void deletePersonByHobby(String hobby){
        List<PersonModel> personByHobby = personDao.findPersonByHobby(hobby);
        try {
            helperDao.delete(personByHobby);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public void deletePerson(PersonModel model){
        try {
            helperDao.delete(model);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public void updatePerson(PersonModel model){
        try {
            helperDao.update(model);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

    APP类:其中将sqlcipher所依赖的so库加载进来

public class App extends Application {
    private static App app;

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        SQLiteDatabase.loadLibs(app);
    }

    public static Context getContext() {
        return app;
    }
}
---------------------
作者:Alistar007
来源:CSDN
原文:https://blog.csdn.net/chensenli/article/details/83757285
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值