打造一个自己的SQL数据库
Android本地数据库 可以用来存储数据,做一些数据传递的操作。现在网上已经有很多成熟的帮助类了,但是还是喜欢自己的东西
下面慢慢打造一个自己的数据库吧
第一步:创建一个帮助创建表的帮助类 OpenHelperDB
/**
* 作者: CoolTone
* 描述: 数据库帮助类
*/
public class OpenHelperDB extends SQLiteOpenHelper {
private static final String DB_NAME = "multimedia.db"; // 数据库
private static final int DB_VERSION = 1; // 版本是整数 必须大于等于1 (修改表字段,添加表时修改)
public static final String DB_UserDao = "user"; // 表名 (增删改查时用到)
public OpenHelperDB(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
recharge(db); //创建 手机用户表
}
private void recharge(SQLiteDatabase db) {
//建表语句 id 姓名 手机号
db.execSQL("create table user(_id integer primary key autoincrement," +
"name," + // 姓名
"phone)" // 手机号
);
// 添加新表...
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
db.execSQL("drop table if exists user"); //删除旧表
// 删除新表...
onCreate(db); //创建新的表
}
}
}
再想创建新表时在 recharge() 方法里添加,并且在 onUpgrade() 删除新表即可
*添加字段或者表时一定要修改 DB_VERSION 不然会报错
*或者再测试的时候卸载app重新安装
第二步:创建规范接口
/**
* 作者: CoolTone
* 描述: 数据库Dao 规范
*/
public interface OperateSql<T> {
void sql_add(String sqlName, T data); // 添加
void sql_upDate(T data); // 修改
T sql_findID(int id); // 根据ID查询
List<T> sql_findAll(); // 查询
void sql_deleteID(String sqlName, int id); // 根据ID删除
void sql_deleteAll(); // 删除所有
void sql_deleteDB(); // 删除表
void sql_findLOG() throws Exception;// log表数据
void setData(ContentValues values, T data); // 添加数据
void getData(T data, Cursor cursor);
}
第三步:创建增、删、改、查帮助父类 帮助以后更好的使用
/**
* 作者:CoolTone
* 描述:表数据增删改查操作 帮助父类
*/
abstract class OpenSqlParent<T> implements OperateSql<T> {
OpenHelperDB mOpenHelperDB;
OpenSqlParent(Context context) {
mOpenHelperDB = new OpenHelperDB(context);
}
/**
* 添加 用insert向数据库中插入数据
*
* @param data
*/
@Override
public void sql_add(String sqlName, T data) {
SQLiteDatabase db = mOpenHelperDB.getWritableDatabase();
ContentValues values = new ContentValues();
setData(values, data);
db.insert(sqlName, null, values);
}
/**
* 删除 通过id删除数据
*
* @param id
*/
@Override
public void sql_deleteID(String sqlName, int id) {
SQLiteDatabase db = mOpenHelperDB.getWritableDatabase();
db.delete(sqlName, "_id=?", new String[]{String.valueOf(id)});
}
// 关闭数据库
@Override
public void sql_deleteDB() {
SQLiteDatabase db = mOpenHelperDB.getWritableDatabase();
db.close();
}
// 查看数据库
@Override
public void sql_findLOG() throws Exception {
List<T> list = sql_findAll();
for (T item : list) {
L.e("查看数据库数据 : " + item.toString());
}
}
}
第四步:继承父类,继续优化增、删、改、查
/**
* 作者:CoolTone
* 描述:充值成功之后的表帮助类
*/
public class UserDao extends OpenSqlParent<UserDBEntity> {
public UserDao(Context context) {
super(context);
}
@Override
public void sql_upDate(UserDBEntity data) {
SQLiteDatabase db = mOpenHelperDB.getWritableDatabase();
ContentValues values = new ContentValues();
setData(values, data);
db.insert(OpenHelperDB.DB_UserDao, null, values);
}
@Override
public UserDBEntity sql_findID(int id) {
List<UserDBEntity> dataList = null;
SQLiteDatabase db = mOpenHelperDB.getReadableDatabase();
Cursor cursor = db.query(OpenHelperDB.DB_UserDao, null, null, null, null, null, null);
if (cursor != null) {
dataList = new ArrayList<>();
while (cursor.moveToNext()) {
UserDBEntity data = new UserDBEntity();
getData(data, cursor);
dataList.add(data);
}
}
return dataList.get(id);
}
@Override
public List<UserDBEntity> sql_findAll() {
List<UserDBEntity> dataList = null;
SQLiteDatabase db = mOpenHelperDB.getReadableDatabase();
Cursor cursor = db.query(OpenHelperDB.DB_UserDao, null, null, null, null, null, null);
if (cursor != null) {
dataList = new ArrayList<>();
while (cursor.moveToNext()) {
UserDBEntity data = new UserDBEntity();
getData(data, cursor);
dataList.add(data);
}
}
return dataList;
}
@Override
public void sql_deleteAll() {
List<UserDBEntity> list = sql_findAll();
SQLiteDatabase db = mOpenHelperDB.getWritableDatabase();
for (int i = 0; i < list.size(); i++) {
db.delete(OpenHelperDB.DB_UserDao, "_id=?", new String[]{String.valueOf(list.get(i).get_id())});
}
}
@Override
public void setData(ContentValues values, UserDBEntity data) {
values.put("name", data.getName());
values.put("phone", data.getPhone());
}
@Override
public void getData(UserDBEntity data, Cursor cursor) {
data.set_id(cursor.getInt(cursor.getColumnIndex("_id")));
data.setName(cursor.getString(cursor.getColumnIndex("name")));
data.setPhone(cursor.getString(cursor.getColumnIndex("phone"))
}
}
再写一个UserDBEntity就可以了
以上就是自己打造的数据库帮助类了...