SQLite的应用

1.为什么要用SQLite

通常我们是用到两种方法对数据进行存储:
SharedPreferences和SQLite
但是SharedPreferences存储的内容在提取和解析数据时,相对复杂,当数据量大,结构复杂时,如果使用SharedPreferences和文件存储对数据的操作将变得非常复杂,容易出错,效率低下,而SQLite处理数据量大,数据结构复杂就很方便了

2.什么是SQLite

①SQLite数据库存储是Android系统提供的数据存储方式之一
②SQLite是专为嵌入式设备设计的一款轻量级数据库
③SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
④SQLite支持标准的SQL语法,遵循数据库的ACID事物
⑤SQLite不需要安装,不需要用户名密码就可以使用

3.如何创建数据库和数据表

创建数据库步骤如下:
①新建类继承SQLiteOpenHelper
②实现其构造方法
③重写OnCreat方法
④重写onUpdate方法
⑤实例化SQLiteOpenHelper的子类对象
⑥调用getReadableDatabase方法或getWriteableDatabase方法
创建数据表:
SQL建表语句:
create table 表名(
列名 列类型 是否可空,
列名 列类型 是否可空,
…);

private String sql="create table student(" +
            "id integer primary key autoincrement not null," +
            "name text," +
            "age integer" +
            ")";

这里要注意的是在其内,int对应的是integer,String对应的是text,float对应的是real,主键则是代码段中的primary key
而自增长则是 autoincrement;

4.如何添加数据

private void addStudent() {
        String name = nameET.getText().toString();
        int age = Integer.parseInt(ageET.getText().toString());

        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        sqLiteDatabase.insert("student", null, values);
    }

首先按照上面所说的步骤创建mySqliteHelper对象,里面四个参数分别是:当前类,数据库名,,版本号;
再用ContentValues传入你添加的值到values中去,然后通过mySqliteHelper调用getWritableDatabase();方法进行读取,最后将参数通过insert方法加进去,这样就加入到了数据库中

5.如何查询数据

private void listStudent() {
        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
        cursor.moveToFirst();
        do {
            id = cursor.getInt(cursor.getColumnIndex("id"));
            name = cursor.getString(cursor.getColumnIndex("name"));
            age = cursor.getInt(cursor.getColumnIndex("age"));
        } while (cursor.moveToNext());
    }

查询里面用到了一个cursor,就是通过dowhile循环读取游标的方法来一个一个查询出来,里面用到了sqLiteDatabase.query方法,里面的参数第一个是数据表名,后面六个null,通过这个方法查询出来

6.如何删除数据

private void delStudent() {
        String name = nameET.getText().toString();
        String age = ageET.getText().toString();
        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        sqLiteDatabase.delete("student", "name=? and age=?", new String[]{name, age});
    }

这里用到的是sqLiteDatabase.delete方法,第一个参数是数据表名,第二个参数是删除的条件,第三个是讲其放到一个数组中去,最后进行删除

7.如何修改数据

private void modifyStudent() {
        String name = nameET.getText().toString();
        String age = ageET.getText().toString();
        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", "BBB");
        //第三个参数----修改条件
        //第四个参数----占位符填充值
        sqLiteDatabase.update("student", values, "name=? and age=?", new String[]{name, age});
    }

而修改用到的是sqLiteDatabase.update方法,这个方法和删除中的参数是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值