Android 数据存储--- SQLite

SQLite简介

Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点:

  1. 轻量级
    使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
  2. 独立性
    SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
  3. 隔离性
    SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
  4. 跨平台
    SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
  5. 多语言接口
    SQLite 数据库支持多语言编程接口。
  6. 安全性
    SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。

创建数据库

首先我们要了解SQLiteHelper这个类,它是Android专门提供的一个SQLite的帮助类。下面简单的介绍一下这个类。
首先,我们要知道SQLiteHelper是一个抽象类,在使用它之前必须要实现它的抽象方法。也就是onCreate()和onUpgrade()方法。
onCreate():
当数据库存在时,不会执行onCreate()方法
onUpgrade()
当数据库版本大于上一版本时,该方法才会执行

SQLiteHelper中还有两个非常重要的实例方法:getReadableDatabases()和getWriteableDatabases()。这两个方法都可以打开一个现有的数据库(如果数据库存在则直接打开,如果不存在则创建一个新的数据库),并返回一个可对数据库操作的对象。不同的是当数据库不可写入时,getReadableDatabases()只能以读的方式打开数据库,而getWriteableDatabases()会报错。

public class SqlTest extends SQLiteOpenHelper {
    private Context mContext;
    private String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";
    public SqlTest(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

添加数据

SQLiteDatabase中提供了一个insert()方法,这个方法就是专门用来添加数据的。它接收三个参数:
第一个参数是表名。第二个参数一般传入null。第三个参数是一个ContentValues对象,它提供一系列的put()方法重载,向ContentValues中添加数据。实例如下:

		SQLiteTest sqLiteTest = new SQLiteTest(this, "test", null, 1);
        SQLiteDatabase db = sqLiteTest.getReadableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name","zhangsan");
        db.insert("table1",null,contentValues);

更新数据

		SQLiteTest sqLiteTest = new SQLiteTest(this, "test", null, 1);
        SQLiteDatabase db = sqLiteTest.getReadableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name","zhangsan");
        db.update("table1",contentValues,"name=?",new String[]{"lisi"});

删除数据

        SQLiteTest sqLiteTest = new SQLiteTest(this, "test", null, 1);
        SQLiteDatabase db = sqLiteTest.getReadableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name","zhangsan");
        db.delete("table1","name=zhangsan",new String[]{"lisi"});

查询数据

query方法参数对应SQL 部分描述
tablefrom table name指定查询的表名
columnsselect column1, column2指定查询的列名
selectionwhere column = value指定where的约束条件
selectionArgs-为where中的占位符提供具体的值
group bygroup by column指定需要group by 的列
havinghaving column = value对group by 后的结果进一步的约束
orderByorder by column1,column2指定结果的查询方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值