AndroidSQLite基本用法

SQLite的特点

  • 支持高达2TB大小的数据库

  • 以单个文件的形式存在

  • 以B-Tree的数据结构形式存储在磁盘

  • 轻量级,一个动态库、单文件

  • 独立性:没有依赖,无序安装

  • 隔离性:支持众多操作系统

  • 多语言接口:支持众多编程语言

SQLite所支持的数据类型

NULL、INTEGER、REAL、TEXT、BLOB数据类型**

空值、整型值、浮点值、字符串值、二进制对象

动态数据类型(弱引用)

当某个值插入到数据库时,Sqlite将会检查他们的类型

如果不能转换,则该值将作为本身的类型存储

数据库存放在哪了?

/data/data/<package name>/databases/目录下

SQLiteOpenHelper

SQLiteOpenHelper是一个帮助类,让我们更方便的管理数据库

创建数据库

在Activity中创建一个SQLiteOpenHelper对象,并传入相应的参数。

使用该对象获取SQLiteDatabase对象,共有两种方式:

  • getWritableDatabase();

  • getReadableDatabase();

    使用这两个方法创建数据库,将会调用SQLiteOpneHelper的onCreate方法

    相同点:如果数据库存在,则打开,否则创建一个新的数据库

    不同点:当数据库不可写入时(如磁盘空间已满),前者会出现异常,而后者则会以只读的形式打开数据库

  • 最后使用SQLiteDatabse对象的方法对数据库进行增删改查等工作。

MainActivity的onCreate()方法:

这样就建立了一个数据库文件。

升级数据库

增添数据 -- 增

  • 使用db.insert("Book", null, values); 向book表插入一条数据

  • 第三个参数为ContentValue,它是对要添加的数据的组装

删除数据 -- 删

三个参数分别为:

  • 要删除的表名

  • 第二三两个参数代表要删除的条件

更新数据 -- 改

四个参数和delete的相似。

查询数据 -- 查

使用SQL操作数据

  • db.execSQL("insert into Book (name,author,pages,price) values(?,?,?,?)", new String[]{"舒克和贝塔","不清楚","256","16.9"});

  • db.execSQL("delete from Book where pages > ?", new String[]{"500"});

  • db.execSQL("update Book set price = ? where name = ?", new Sting[]{"10.0","舒克和贝塔"}); 把舒克和贝塔这本书的price改为10.0

  • db.rawQuery("select * from Book", null);

使用事务

什么是事务?

事务的特性是为了保证某一系列操作要么全部完成,要么全部不完成

例如银行取钱: 要么将要取的金额全部取出,要么一分也取不出,不会出现取出一部分的情况。


参考:《第一行代码》

最后更新于

这有帮助吗?