1、首先呢 在build.gradle中导入数据库包
implementation 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
2、创建工具类(放在后面了)
3、在APP的mainActivity中的create方法中 加入DatabaseManger.getInstance(this);
import android.content.ContentValues;
import android.content.Context;
import net.sqlcipher.Cursor;
import net.sqlcipher.database.SQLiteDatabase;
import net.sqlcipher.database.SQLiteStatement;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 数据库工具类
* 使用:DatabaseManger.getInstance()
*/
public class DatabaseManger {
private final static String DB_PWD="yourpwd";
private static final String DB_NAME = "database.db";//数据库名字
private static DBHelper dbHelper ;
private SQLiteDatabase sqLiteDatabase;
private static DatabaseManger instance = null;
/**
*
* 构造方法上下文
*
* @param context
* @return
*/
private DatabaseManger(Context context )
{
dbHelper = new DBHelper(context,DB_NAME);
sqLiteDatabase = dbHelper.getWritableDatabase(DB_PWD);
}
/**
*
* 获取本类对象的实例
* @param context
* @return
*/
public static synchronized DatabaseManger getInstance(Context context)
{
if (instance == null) {
if(context == null) {
throw new RuntimeException("NullContextException");
}
instance = new DatabaseManger(context);
}
return instance;
}
/**
* 关闭数据库
*/
public synchronized void close()
{
if(sqLiteDatabase.isOpen())
{
sqLiteDatabase.close();
sqLiteDatabase=null;
}
if(dbHelper!=null)
{
dbHelper.close();
dbHelper=null;
}
if(instance != null)
{
instance = null;
}
}
/**
* 执行一条sql语句
*
*/
public void execSql(String sql)
{
if(sqLiteDatabase.isOpen())
{
sqLiteDatabase.execSQL(sql);
}
else
{
throw new RuntimeException("The DataBase has already closed");
}
}
/**
* sql执行查询操作的sql语句
* selectionargs查询条件
* 返回查询的游标,可对数据进行操作,但是需要自己关闭游标
*/
public Cursor queryData2Cursor(String sql, String[] selectionArgs)throws Exception
{
Cursor cursor = null;
if(sqLiteDatabase.isOpen())
{
cursor = sqLiteDatabase.rawQuery(sql,selectionArgs);
}else
{
throw new RuntimeException("The DataBase has already closed");
}
return cursor;
}
/**
* 查询表中数据总条数
* 返回表中数据条数
*
*/
public int getDataCounts(String table)throws Exception
{
Cursor cursor = null;
int counts = 0;
if(