SQLite数据库的简单使用

平时工作中是真没有接触SQLite本地数据库,然后在学习过程中,看序列化的时候(其实后来发现和序列化并没有半毛钱关系,很尴尬),突然想到了数据库这个东西,很久不用基本上忘的没有了,所以就写个demo总结一下使用。


对于SQLite语句不熟悉的,可以使用数据库工具来练习一下
传送门:数据库工具SQLite Expert Personal的简单使用


如何在Android中简单使用SQLite数据库?我们只需要写两个工具类来使用操作就可以了

  1. 创建数据库的帮助类 —— DBHelper
      我们创建一个DBHelper去继承SQLiteOpenHelper,然后实现onCreate和onUpgrade即可,当然,构造函数不能忘掉。下面的代码中各部分的注释就标注的很清楚啦!
public class DBHelper extends SQLiteOpenHelper {
    private static final int VERSION = 1;//定义数据库版本号
    private static final String DBNAME = "ceshi.db"; //定义数据库名

    public DBHelper(Context context) {//定义构造函数
        //参数 上下文 数据库名称 cosor工厂 版本号
        super(context, DBNAME, null, VERSION);//重写基类的构造函数
    }

    @Override
    public void onCreate(SQLiteDatabase db) {//创建数据库
        //序号,姓名,年龄,登记日期
        db.execSQL("create table ceshi (id varchar(10) primary key, name varchar(200),age varchar(10),date varchar(10))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新数据库
        //本方法主要用于更新数据库 通过对当前版本的判断 实现数据库的更新
        }
}
  1. 创建增删改查的工具类 —— CeshiDao
      我这里只是简单的实现了数据库的增删改查功能
  • 插入数据,这里使用replace而没有使用insert的原因是,我的表里的id字段建立了唯一索引,所以如果insert使用已经存在的键值插入一条记录,会抛出一 个主键冲突的错误,使用replace则会直接替换掉原来的数据。所以我使用了replace
  /*插入*/
    public void insertDao(Ceshi ceshi) {
        db = helper.getWritableDatabase();//初始化SQLiteDatabase对象
        //执行插入操作
        db.execSQL("replace into ceshi (id,name,age,date) values (?,?,?,?)",
                new Object[]{
                        ceshi.getId(),
                        ceshi.getName(),
                        ceshi.getAge(),
                        ceshi.getDate()
                });
    }
  • 删除数据
/*删除*/
    public void deleteDao(Integer... ids) {
        if (ids.length > 0) {//判断是否存在要删除的id
            StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
            for (int i = 0; i < ids.length; i++)// 遍历要删除的id集合
            {
                sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
            }
            sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            // 执行删除收入信息操作
            db.execSQL("delete from ceshi where id in (" + sb + ")",
                    (Object[]) ids);
        }
    }
  • 更新修改数据
  /*修改*/
    public void updateDao(Ceshi ceshi) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        // 执行修改收入信息操作
        db.execSQL(
                "update ceshi set name=?,age= ?,date=? where id= ?",
                new Object[]{
                        ceshi.getName(),
                        ceshi.getAge(),
                        ceshi.getDate(),
                        ceshi.getId()
                });
    }
  • 查询单个数据
/*查询*/
    public Ceshi findDao(int id) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        Cursor cursor = db
                .rawQuery(
                        "select id,name,age,date from ceshi where id= ?",
                        new String[]{String.valueOf(id)});// 根据编号查找,并存储到Cursor类中
        if (cursor.moveToNext())// 遍历查找到的收入信息
        {
            // 将遍历到的收入信息存储到Tb_inaccount类中
            return new Ceshi(
                    cursor.getInt(cursor.getColumnIndex("id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getInt(cursor.getColumnIndex("age")),
                    cursor.getLong(cursor.getColumnIndex("date"))
            );
        }
        return null;
    }
  • 查询所有数据
 /*获取所有数据*/
    public List getAllData() {
        List csList= new ArrayList();// 创建集合对象
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        // 获取所有收入信息
        Cursor cursor = db.rawQuery("select * from ceshi", null);
        while (cursor.moveToNext())// 遍历所有的收入信息
        {
            // 将遍历到的收入信息添加到集合中
            csList.add(new Ceshi(
                    cursor.getInt(cursor.getColumnIndex("id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getInt(cursor.getColumnIndex("age")),
                    cursor.getLong(cursor.getColumnIndex("date"))
            ));
        }
        return csList;// 返回集合
    }

如果有不对的地方需要改正的,欢迎提出建议
欢迎关注我的Github:ContentMy
最后附上项目地址:SQLiteDemo

你可能感兴趣的:(SQLite数据库的简单使用)