//helper类写法参考自https://blog.csdn.net/lmj623565791/article/details/39122981
//import的包这里省略不写。。
//必须继承OrmLiteSqliteOpenHelper
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
// 数据库名
private static final String DB_NAME = "mytable2.db";
/*
* Dao,一表一个
*/
private Dao<Username, Integer> userDao;
private Dao<Schedule, Integer> scheduleDao;
private Dao<Student, Integer> studentDao;
private Dao<CurClassCon, Integer> CurClassConDao;
private Dao<TotalClassCon, Integer> TotalClassConDao;
public DatabaseHelper(Context context) { //方法重载
super(context, DB_NAME, null, 2);
}
// 创建表
@Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
try {
TableUtils.createTable(arg1, Username.class);
TableUtils.createTable(arg1, Schedule.class);
TableUtils.createTable(arg1, Student.class);
TableUtils.createTable(arg1, CurClassCon.class);
TableUtils.createTable(arg1, TotalClassCon.class);
} catch (SQLException e) { //异常捕获
Log.e(DatabaseHelper.class.getName(), "创建数据库失败", e);
e.printStackTrace();
}
}
// 更新表,arg1=curversion,arg2=oldversion,arg3=newversion
@Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
int arg3) {
try {
// 删除后建立到数据库中
TableUtils.dropTable(arg1, Username.class, true);
TableUtils.dropTable(arg1, Schedule.class, true);
TableUtils.dropTable(arg1, Student.class, true);
TableUtils.dropTable(arg1, CurClassCon.class, true);
TableUtils.dropTable(arg1, TotalClassCon.class, true);
onCreate(arg0, arg1);
} catch (SQLException e) {
Log.e(DatabaseHelper.class.getName(), "更新数据库失败", e);
e.printStackTrace();
}
}
/**
* 单例获取该Helper
*
* @param context 外部传入上下文对象
* @return
*/
private static DatabaseHelper instance;
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;
}
/**
* 获得UserDao
*
* @return
* @throws SQLException
*/
public Dao<Username, Integer> getUserDao() throws SQLException {
if (userDao == null) {
userDao = getDao(Username.class);// 得到username表
}
return userDao;
}
//以下是各种Dao的获取,一个Dao一个,当然也可以归并成一个方法,不过当时懒得写,就直接一Dao一个的写下来了,反正不多
/**
* 获得ScheduleDao
*
* @return
* @throws SQLException
*/
public Dao<Schedule, Integer> getScheduleDao() throws SQLException {
if (scheduleDao == null) {
scheduleDao = getDao(Schedule.class);// 得到Schedule表
}
return scheduleDao;
}
/**
* 获得StudentDao
*
* @return
* @throws SQLException
*/
public Dao<Student, Integer> getStudentDao() throws SQLException {
if (studentDao == null) {
studentDao = getDao(Student.class);// 得到Student表
}
return studentDao;
}
/**
* 获得CurClassConDao
*
* @return
* @throws SQLException
*/
public Dao<CurClassCon, Integer> getCurClassConDao() throws SQLException {
if (CurClassConDao == null) {
CurClassConDao = getDao(CurClassCon.class);// 得到CurClassCon表
}
return CurClassConDao;
}
/**
* 获得TotalClassConDao
*
* @return
* @throws SQLException
*/
public Dao<TotalClassCon, Integer> getTotalClassConDao() throws SQLException {
if (TotalClassConDao == null) {
TotalClassConDao = getDao(TotalClassCon.class);// 得到TotalClassCon表
}
return TotalClassConDao;
}
/**
* 释放资源
*/
@Override
public void close() {
super.close();
userDao = null;
scheduleDao=null;
studentDao=null;
TotalClassConDao=null;
CurClassConDao=null;
}
}
参考文章:https://blog.csdn.net/lmj623565791/article/details/39122981
© 黑羽翼的Android工具箱 | Powered by LOFTER