ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Android学习之SQLite数据库存储

2021-04-18 16:33:11  阅读:154  来源: 互联网

标签:SQLite 创建 数据库 SQLiteOpenHelper 升级 Android 方法


•引言

概念

  SQLite数据库,和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库;

特点

  • SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用

  • 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便

  • SQLite支持五种数据类型

    • NULL
    • integer(整型)
    • real(浮点型)
    • text(文本类型)
    • blob(二进制类型)
  • SQlite 通过文件来保存数据库 

    • 一个文件就是一个数据库
    • 数据库中又包含多个表格
    • 表格里又有多条记录
    • 每条记录由多个字段构成
    • 每个字段都有对应的值

•创建数据库

  Android为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper 帮助类;

  借助这个类就可以非常简单地对数据库进行创建和升级。

 

  SQLiteOpenHelper 是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它;

  SQLiteOpenHelper 中有两个抽象方法,分别是  oncreate()  和  onUpgrade() ;

  •  onCreate(database)  : 数据库第一次被创建时被调用

  •  onUpgrade(database,oldVersion,newVersion)  : 在数据库的版本发生变化时会被调用

    • 一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的
    • 假设数据库现在的版本是 1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构
    • 为了实现这一目的,可以把原来的数据库版本设置为 2,或者其他与旧版本号不同的数字即可

  我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现 创建、升级数据库 的逻辑。

 

  SQLiteOpenHelper 中还有两个非常重要的实例方法: getReadableDatabase() 和  getWritableDatabase() 。

  这两个方法都可以 创建或打开 一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),

  并返回一个可对数据库进行读写操作的对象。

  不同的是,当数据库不可写入的时候(如磁盘空间已满):

  •  getReadableDatabase() 方法返回的对象将以只读的方式去打开数据库
  • 而  getWritableDatabase() 方法则将出现异常

  

  SQLiteOpenHelper 中有三个构造方法可供重写,一般使用参数少一点的那个:

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

  该构造方法中接收四个参数:

  •  Context context :这个没什么好说的,必须有这个才能对数据库进行操作
  •  String name :第二个参数是数据库名,创建数据库时使用的就是这里指定的名称
  •  SQLiteDatabase.CursorFactory factory :第三个参数允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入null
  •  int version :第四个参数表示当前数据库的版本号,可用于对数据库进行升级操作

  构建出 SQLiteOpenHelper 的实例之后,再调用它的  getReadableDatabase()  或  getWritableDatabase()  方法就能够创建数据库了;

  数据库文件会存放在  /data/data/<package name>/databases/  目录下;

  此时,重写的  onCreate()  方法也会得到执行,所以通常会在这里去处理一些创建表的逻辑。

•通过代码深入理解

准备工作

  首先新建一个 TestDatabase 项目。

 

 

标签:SQLite,创建,数据库,SQLiteOpenHelper,升级,Android,方法
来源: https://www.cnblogs.com/hyacinthLJP/p/14673800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有