parent
d49aa59343
commit
6da6d38074
@ -1,111 +0,0 @@
|
||||
package com.example.sparrownotes.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.util.ArrayMap;
|
||||
|
||||
import com.example.sparrownotes.bean.NoteBean;
|
||||
import com.example.sparrownotes.bean.UserBean;
|
||||
import com.example.sparrownotes.util.Constant;
|
||||
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
|
||||
import com.j256.ormlite.dao.Dao;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.table.TableUtils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
/**
|
||||
* 数据库帮助类
|
||||
*
|
||||
* @author Horsen
|
||||
*/
|
||||
@SuppressWarnings("AlibabaRemoveCommentedCode")
|
||||
public class DBHelper extends OrmLiteSqliteOpenHelper {
|
||||
/**
|
||||
* 防止多线程同时操作, 实现单例模式, 并锁定线程
|
||||
* 数组存储App中所有的Dao对象的Map集合
|
||||
*/
|
||||
private static DBHelper dbHelper = null;
|
||||
private ArrayMap<String, Dao> daos = new ArrayMap<>();
|
||||
|
||||
public static synchronized DBHelper getInstance(Context context) {
|
||||
if (dbHelper == null) {
|
||||
synchronized (DBHelper.class) {
|
||||
if (dbHelper == null) {
|
||||
dbHelper = new DBHelper(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dbHelper;
|
||||
}
|
||||
|
||||
private DBHelper(Context context) {
|
||||
super(context, Constant.DB_NAME, null, Constant.DB_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* 包含创建表的语句
|
||||
*
|
||||
* @param sqLiteDatabase
|
||||
* @param connectionSource
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
|
||||
try {
|
||||
TableUtils.createTable(connectionSource, UserBean.class);
|
||||
TableUtils.createTable(connectionSource, NoteBean.class);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 包含新建表的语句
|
||||
* 就是删了再创罢了
|
||||
*
|
||||
* @param sqLiteDatabase
|
||||
* @param connectionSource
|
||||
* @param i
|
||||
* @param i1
|
||||
*/
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
|
||||
try {
|
||||
TableUtils.dropTable(connectionSource, UserBean.class, false);
|
||||
TableUtils.dropTable(connectionSource, NoteBean.class, false);
|
||||
onCreate(sqLiteDatabase, connectionSource);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据传入的Dao路径获取这个Dao的单例对象, 要么从daos中获取, 要么新建一个存入daos
|
||||
*/
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue