SQLite

SQLite是一种嵌入式的数据库引擎,以文件的形式保存数据的,专门适用于资源有限的设备上进行适量的数据存储。

从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作,当应用程序创建或打开一个SQLite数据库时,其实只是打开一个文件准备读写。

虽然SQLite内部只支持null(空)、integer(整型)、real(浮点数)、text(文本)和blob(二进制)这五种数据类型,但是varchar(n)、char(n)、decimal(p, s)、date等类型数据可以转换为上面五种数据类型中相应的类型进行储存。例如可以将图片转换为二进制进行储存。

注意:定义为integer primary key的字段只能存储64位整数,否则SQLite会产生错误。

SQLiteOpenHelper

SQLiteOpenHelper提供构造器,用于传递当前上下文对象以及SQLite数据库版本信息,在SQLiteOpenHelper的继承类的构造函数中会调用它,构造器如下:

SQLiteOpenHelper(Context context, String name,
                 SQLiteDatabase.CursorFactory factory, int version)

上面的构造函数中,都是用于创建一个SQLite数据库,context为一个当前应用的上下文对象;name是数据库名称;factory是一个允许子类在查询时使用的游标,一般不用(传null即可);version是数据库版本号。

在SQLiteOpenHelper中,可以进行SQLite数据库的创建、维护、日志以及获取可读写的数据库对象,通过下面几个常用方法得到支持:
  1)String getDatabaseName():获取数据库名。
  2)SQLiteDatabase getReadableDatabase():创建或者打开一个可读的数据库对象。
  3)SQLiteDatabase getWritableDatabase():创建或者打开一个可读/写的数据库对象。
  4)abstract void onCreate(SQLiteDatabase db):当第一次调用SQLiteOpenHelper的时候执行,之后再次调用将不再执行,一般用于完成数据库初始化的工作。
  5)void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本号发生向上更新时被执行。
  6)void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本号发生向下更新时被执行。

SQLiteDatabase

当使用SQLiteOpenHelper的getReadableDatabase()或者getWritableDatabase()方法获取到SQLiteDatabase对象,就可以对这个数据库进行操作了。

CRUD

其中C代表添加(Create),R代表查询(Retrieve),U代表更新(Update),D代表删除(Delete)。

1、使用SQL语句执行CRUD操作

void execSQL():通过SQL语句执行一条非查询语句。(增删改)
Cursor rawQuery():通过SQL语句执行一条查询语句。(查)

2、使用SQLiteDatabase所提供的方法实现CRUD操作

1)插入一条数据

long insert(String table, String nullColumnHack, ContentValues values)

table是表名;nullColumnHack用于在未指定添加数据的情况下给某些可为空的列自动赋值null,一般用不到这个功能,直接传入null即可;values是一个 ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。
  2)根据条件,删除数据。

int delete(String table, String whereCaluse, String[] whereArgs)

table是表名;whereCaluse和whereArgs用于去约束删除某一行或某几行的数据,不指定的话默认就是删除所有行。  
  3)根据条件,更新数据。

int updata(String table,ContentValues values,String whereCaluse,String[] whereArgs)

table是表名;values是ContentValues对象要把更新数据在这里组装进去;whereCaluse和whereArgs用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
  4)根据条件,查询数据。

Cursor query(String table, String[] columns, String selection, String[] selectionArgs,
String groupBy, String having, String orderBy)

table是表名;columns用于指定去查询哪几列,如果不指定则默认查询所有列;selection和selectionArgs用于去约束查询某一行或某几行的数据,不指定则默认是查询所有行的数据;groupBy用于指定需要去group by的列,不指定则表示不对查询结果进行group by操作;having用于对group by之后的数据进行进一步的过滤,不指定则表示不进行过滤;orderBy用于指定查询结果的排序方式,不指定则表示使用默认的排序方式。

作者:李俊的博客
链接:https://www.jianshu.com/p/8955b0e73186
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. XML语言基础1
  2. 用div,ul,input模拟select下拉框
  3. CSS-3 Animation 的使用
  4. 9、C#基础整理(多维数组)
  5. POJ 2674
  6. 嵌入式 使用mp4v2将H264+AAC合成mp4文件
  7. 百度HTTPS加密搜索有什么用?
  8. java16 程序、进程、线程
  9. ubuntu安装hadoop 若干问题的解决
  10. 在SQL Server中添加Linked Server 图解版
  11. 一个小时学会MySQL数据库
  12. Android中的WebView实战详解(一)
  13. Android开发艺术探索第五章——理解RemoteViews
  14. IE浏览器下ajax和缓存的那些事儿
  15. 关闭VS警告 warning C4996
  16. ASP.NET MVC 入门
  17. hdu-2619 Love you Ten thousand years
  18. [GO]结构体及普通变量初始化
  19. Linux常用三十七条指令
  20. 服务器之FRU

热门文章

  1. top 命令 详解
  2. webRTC client 源码环境工具配置
  3. js实现图片上传本地预览
  4. vue页面跳转
  5. Mariadb 介绍 1 (安装)
  6. excel合并日期和时间(转载)
  7. Qt5安装及组件选择(Qt 5.12.0)
  8. WPF系列——简单绑定学习
  9. LINQ查询表达式(3) - LINQ 查询分组
  10. Flask - 四剑客 | templates | 配置文件 | 路由系统 | CBV