Android GreenDao清空数据库的方法
最近在做项目的时候,为了方便测试人员测试,在应用中加入正式库和测试库切换的功能。为了防止正式库和测试库切换带来的数据冲突,切换的时候必须把当前的数据库清空。代码如下:
package com.example.admin.greendaotest; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.greendao.gen.DaoMaster;
import org.greenrobot.greendao.database.Database;
/**
* Created by admin on 2017/9/19.
*/ public class DBManager {
private final static String dbName = "student_db";
private static DBManager mInstance;
private DaoMaster.OpenHelper openHelper;
private Context context; public DBManager(Context context) {
this.context = context;
openHelper = new DaoMaster.OpenHelper(context, dbName, null){};
} /**
* 获取单例引用
*
* @param context
* @return
*/
public static DBManager getInstance(Context context) {
if (mInstance == null) {
synchronized (DBManager.class) {
if (mInstance == null) {
mInstance = new DBManager(context);
}
}
}
return mInstance;
} /**
* 获取可读数据库
*/
private SQLiteDatabase getReadableDatabase() {
if (openHelper == null) {
openHelper = new MySQLiteOpenHelper(context, dbName, null);
}
SQLiteDatabase db = openHelper.getReadableDatabase();
return db;
} /**
* 获取可写数据库
*/
private SQLiteDatabase getWritableDatabase() {
if (openHelper == null) {
openHelper = new MySQLiteOpenHelper(context, dbName, null);
}
SQLiteDatabase db = openHelper.getWritableDatabase();
return db;
}
public void deleSQL(){
SQLiteDatabase db=getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoMaster.dropAllTables(daoMaster.getDatabase(),true);
DaoMaster.createAllTables(daoMaster.getDatabase(),true); }
class MySQLiteOpenHelper extends DaoMaster.OpenHelper{ @Override
public void onCreate(Database db) {
super.onCreate(db);
} public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
super(context, name, factory);
}
} }
必须要加上DaoMaster.createAllTables(daoMaster.getDatabase(),true),不然重新进行数据库操作的时候(crud)会报找不到数据库表的错误:Caused by: android.database.sqlite.SQLiteException: no such table: 表名 ,至于为什么不会重新创建数据库表,我也不知道为啥,在这上面也浪费了一些时间,所以写下这篇博客。
Android GreenDao清空数据库的方法的更多相关文章
- android greenDao SQLite数据库操作使用的工具
关于如何建立类生成一个演示project.今天介绍如何使用. 这是ExampleDaoGeneratorproject代码,做了一些改动 /* * Copyright (C) 2011 Markus ...
- android中清空一个表---类似truncate table 表名 这样的功能 android sqlite 清空数据库的某个表
public void clearFeedTable(){ String sql = "DELETE FROM " + FEED_TABLE_NAME +";" ...
- android高效ORM数据库框架greenDao使用
因为项目中多处用到了数据库,需要对数据库频繁的读写操作,虽然android 自带的SQLiteOpenHelper的.这种方式比较方便易懂,但是在使用过程中需要写很多的sql语句,而且需要及时的关闭和 ...
- 【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结
转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁 ...
- greendao操作数据库的使用方法
第一步:把greendao-1.3.0-beta-1,greendao-generator-1.3.1两个jar包加载到工程的lib的文件夹中,一定要右键点击Add As Library后才能使用. ...
- Sybase数据库截断和清空日志的方法
今天碰到一个奇怪的问题,当我打开应用程序的时候,开始的时候鼠标图标还显示程序正在启动,可是一会后,就没有任何反应了.重复了N多次都是这样,后来发现,每次打开应用程序的时候,任务管理器中都会相应的多一个 ...
- [Android]Gradle 插件 DiscardFilePlugin(class注入&清空类和方法)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6732128.html Android Gradle 插件 Di ...
- Oracle清空数据库中数据表数据的方法
一.简介最近在项目发版测试的时候,导出dmp的时候不小心把开发库中的一些脏数据导出来了,测试那边导入进去之后一堆不规范的数据,为了不影响测试结果,于是总结了一个快速清空数据库数据表所有数据的方法. 二 ...
- Android GreenDao使用教程
1.在build.gradle里添加相关依赖 apply plugin: 'org.greenrobot.greendao' buildscript { repositories { mavenCen ...
随机推荐
- P4841 城市规划 FFT+生成函数
\(\color{#0066ff}{ 题目描述 }\) 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使 ...
- CF567E President and Roads
\(\color{#0066ff}{ 题目描述 }\) 给出一个有向图,从起点走到终点(必须走最短路),问一条边是否一定会被经过,如果不经过它,可以减小它的多少边权使得经过它(边权不能减少到0) \( ...
- typeof 和 instanceof
typeof 和 instanceof 都是用来判断类型的函数 typeof 对于原始类型来说,除了 null 都可以显示正确的类型 typeof 1 // 'number' typeof '1' / ...
- Leetcode 70. Climbing Stairs 爬楼梯 (递归,记忆化,动态规划)
题目描述 要爬N阶楼梯,每次你可以走一阶或者两阶,问到N阶有多少种走法 测试样例 Input: 2 Output: 2 Explanation: 到第二阶有2种走法 1. 1 步 + 1 步 2. 2 ...
- zookeeper客户端使用第三方(zkclient)封装的Api操作节点
1.引入依赖 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...
- Activiti工作流开发准备(一)
一:开发工作流需要配合所画流程图以及根据流程图所生成的.bpmn文件进行开发,Activiti提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图. 二:eclipse插件安装 1.打开 ...
- mysql的时区错误问题
JDBC连接数据库报错如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or r ...
- jquery 拖动改变div大小
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ora-1652
###检查是否有temp 在使用 step 2: 检查是否有事务使用到temp,并且进行删除. SELECT vt.inst_id,vs.sid,vs.serial#,vs.username,vs.o ...
- ES6数组新增方法总结
关于数组中forEach() .map().filter().reduce().some().every()的总结 let arr = [1, 2, 3, 4, 5] // forEach遍历数组 a ...