Android之SQLite数据库

打造一个自己的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就可以了

以上就是自己打造的数据库帮助类了...




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值