您好!欢迎来到源码码网

Android本地存储之SQLite数据库存储数据

  • 源码教程
  • 来源:源码码网
  • 编辑:admin
  • 时间:2021-02-19 19:38
  • 阅读:534

前面我们介绍了用 SharedPreferences 和文件存储信息的方法,但是当频繁大量地使用数据存储时,就要用到数据库来管理信息数据。

在 
Android 中,我们使用 SQLite 数据库,在应用中也常常会用到 SQLite 来存储、管理、维护数据,下面将详细介绍 SQLite 的使用方法。

SQLite 数据库简介

Android 通过 SQLite 数据库引擎来实现结构化数据存储。

Android 系统提供对 SQLite 数据库的完全支持,在数据库应用程序中,任何类都可以通过名字对已创建的数据库进行访问,但是在应用程序之外不可以。

SQLite 是一个轻量级数据库,第一个版本诞生在 2000 年 5 月,其遵守 ACID 的关联式数据库管理系统,最初就是为嵌入式设计的,其占用资源非常少,在内存中只需要占用几百千字节(KB)的存储空间,这也是 Android 采用 SQLite 数据库的重要原因之一。


同时,SQLite 还支持事务处理功能,根据相关资料可知,SQLite 的处理速度比 MySQL、PostgreSQL 等著名的开源数据库管理系统更快。另外,SQLite 数据库不像其他的数据库(如Oracle),它没有服务器进程。

SQLite 通过文件保存数据库,该文件是跨平台的,可以自由复制。一个文件就是一个数据库,数据库名称即文件名;

数据库里面可以包含多个表格,在每个表格中可以添加多条记录,但记录没有名称;记录可以由多个字段组成,每个字段都要有相对应的值,每个值都必须指定类型。基于SQLite自身的先天优势,其在嵌入式领域中得到了广泛应用。

SQLite 支持 SQL 语言,由 SQL 编译器、内核、后端以及附件组成。

SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。


Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库,在 Android 开发中使用 SQLite 相当简单。

由于 JDBC 会消耗太多的系统资源,所以 JDBC 对于手机这种内存受限的设备来说并不合适。因此,Android 提供了一些新的 API 来使用 SQLite 数据库。

在 Android 开发中,我们需要学习使用这些 API。另外需要了解的是,数据库存储在 data/<项目文件夹>/databases/ 目录下。

操作 SQLite 数据的步骤如下:

1)创建 SQLite 数据库。

Android 系统推荐的创建 SQLite 数据库的方法是创建实现 SQLiteOpenHelper 接口的子类,并且重写 onCreate() 方法,在该方法中执行用于创建 SQLite 数据库的命令。

所创建的数据库同SharedPreferences一样被放置在 /data/data/<your package name>/database 目录下,例如:

  1. public class DictionaryOpenHelper extends SQLiteOpenHelper {


  2. private static final int DATABASE_VERSION = 2;

  3. private static final String DICTIONARY_TABLE_NAME = "dictionary";

  4. //创建数据库的SQL语句

  5. private static final String DICTIONARY_TABLE_CREATE =

  6. "CREATE TABLE " + DICTIONARY_TABLE_NAME + "(" + KEY_WORD + " TEXT, " +

  7. KEY_DEFINITION + "TEXT);";

  8. DictionaryOpenHelper(Context context) {

  9. super(context, DATABASE_NAME, null, DATABASE_VERSION);

  10. }

  11. @Override

  12. public void onCreate(SQLiteDatabase db) {

  13. db.execSQL(DICTIONARY_TABLE_CREATE);//执行SQL语句

  14. }

  15. }

2)获取数据库对象

通过实现 SQLiteOpenHelper 接口的类的对象,调用 getWritableDatabase() 和 getReadableDatabase() 方法,可以返回所创建数据库的 SQLiteDatabase 对象。

3)对数据库进行操作

SQLiteDatabase 对象提供了对数据库进行操作的一系列方法,例如 query、insert、delete、update 等,进而对 SQLite 数据库进行读写等操作。

4)返回结果

对数据库的查询操作会返回一个 Cursor 对象,通过该对象可以从返回的结果中读取出行、列信息。

SQLite 数据库操作

Android 提供了创建和使用 SQLite 数据库的 API。Android SDK 提供了一系列对 SQLite 数据库进行操作的类和接口,这里我们简单介绍一下。

1)SQLiteDatabase 类

SQLiteDatabase 是一个数据库访问类,此类封装了一系列数据库操作的 API,使其可以对数据进行 CRUD 操作,即添加、查询、更新、删除等。一些常用的操作数据库的方法如下表所示。

SQLiteDatabase常用方法

image.png

2)SQLiteOpenHelper 类

SQLiteOpenHelper 是一个抽象类,用来创建和版本更新。

SQLiteOpenHelper 的子类通过 getReadableDatabase() 和 getWritableDatabase() 方法来获取 SQLiteDatabase 实例对象,并保证以同步方式访问。

通常情况下,getReadableDatabase() 和 getWritableDatabase() 都是创建或者打开一个可写数据库,并返回相同的对象。

只有在某些情况下,例如磁盘空间满了,或者数据库只能以只读方式打开的时候,getReadableDatabase() 方法才会以查询方式打开数据库。

其一般的用法是定义一个类继承之,并实现其抽象方法来创建和更新数据库,其常见的方法如下表所示

SQLiteOpenHelper常用方法

image.png

3)Cursor 接口

Cursor 是一个游标接口,在数据库中使用时作为返回值,相当于结果集 ResultSet。它提供了遍历查询结果的方法。Cursor 游标的一些常用方法如下表所示。

Cursor游标常用方法

image.png

这些方法的使用可以通过创建数据库、创建表和执行 SQL 语句的过程一一进行介绍。

1)打开或创建数据库

openOrCreateDatabase() 方法会自动检测要打开的数据库是否存在,如果存在就打开,否则创建一个数据库。

若该方法运行成功,则返回一个 SQLiteDatabase 对象,否则抛出异常 FileNotFoundException。下面为创建名为“sie.db”的数据库的代码:

SQLiteDatabase database=SQLiteDatabase.openOrCreateDatabase("/data/data/sie.db",null);

2)创建数据表

使用 SQLiteDatabase 的 execSQL() 方法执行 SQL 语句,便能创建一个表。

下面创建一个表,其中有三个属性:_id 为主键并自动增加,name 为姓名,number 为编号,相关代码如下:

String table="create table sietexttable(_id integer primary key autoincrement,name text, number text)";
database.execSQL(table);

3)插入数据

使用 SQLiteDatabase 的 insert(String table,String nullColumnHack, ContentValues values) 方法。

参数说明:

  • 第一个参数是表名称。

  • 第二个参数是空列的默认值。

  • 第三个参数是ContentValues封装的列的名称和对应的列值。代码如下:

  1. ContentValues values=new ContentValues();

  2. values.put("name", "sietext01");

  3. values.put("number", "001");

  4. database.insert("table", null, values);

4)删除数据

使用 SQLiteDatabase 的 delete(String table,String whereClause,String[] whereArgs) 方法。

参数说明:

  • 第一个参数是表的名称。

  • 第二个参数是删除条件。

  • 第三个参数是条件值数组。


5)修改数据

使用 SQLiteDatabase 的 update(String table,ContentValues values,String whereClause, String[] whereArgs) 方法。

参数名称:

  • 第一个参数是表名称。

  • 第二个参数是更新行和列的 ContentValues 类型的键值对。

  • 第三个参数是更新条件。

  • 第四个参数是更新的条件数组。


此外,上述三种能够引起数据库数据改变的操作,都可以通过 SQLiteDatabase 的 execSQL() 方法来完成。

6)查询数据

在 Android 中通过 Cursor 类来实现,使用 SQLiteDatabase.query() 方法会得到一个 Cursor 对象。

Cursor 用于指向查询结果中的记录。下面使用 Cursor 查询数据库中的数据,代码如下:

  1. Cursor cursor = database.query("table",null,null,null,null,null,null);

  2. /*判断游标是否为空*/

  3. if(cursor.moveToFirst()){

  4. for (int i = 0;i<cursor.getCount();i++){

  5. cursor.moveToNext();

  6. //获得ID

  7. int id = cursor.getInt(0);

  8. //获得用户名

  9. String name = cursor.getString(1);

  10. //获得编号

  11. String number = cursor.getString(2);

  12. }

  13. }

SQLiteOpenHelper 类是 SQLiteDataBase 的帮助类,这个类主要用于打开或者创建数据库,并返回数据库对象,同时对数据库的版本进行管理。并且它是一个抽象类,需要继承它并实现里面的两个抽象方法:

  • onCreate(SQLiteDatabase):在数据库第一次生成的时候会调用这个方法,一般在这个方法中生成数据库表。

  • onUpgrade(SQLiteDatabase,int,int):当数据库需要升级的时候,系统会主动调用这个方法。一般在这个方法中删除原有数据表,并建立新的数据表。


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • bootstrap ui框架能用在uniapp中吗?
  • bootstrap ui框架能用在uniapp中吗?
  • BootstrapUI框架通常是前端开发中的一种工具,它提供了一套预定义的CSS样式和组件,用于快速构建响应式布局的网页。然而,UniApp是一个使用Vue.js开发跨平台应用的框架,它可以用来开发iOS、Android、以及各种小程序和H5应用。
  • 互动社区
  • 来源:源码码网
  • 编辑:热度建站
  • 时间:2024-04-12 00:04
  • 阅读:175
  • css实现banner图由中心点动态放大效果
  • css实现banner图由中心点动态放大效果
  • 在日常的网页设计中,为了让网页增加一定的特效以达到交互的目的,我们尝尝会在网页中使用一些动画效果。今天来说说实现banner图由中心点动态放大效果,实现这个效果需要用到css中的动画:animation​和关键帧:@keyframes,具体示例如下:
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2024-04-11 18:52
  • 阅读:189
  • countUp.js实现鼠标滑动到某个位置数字自动滚动增加的效果
  • countUp.js实现鼠标滑动到某个位置数字自动滚动增加的效果
  • 在网页开发中为了提升网页的交互效果,经常会用到使用js给网页增加一定的特效,下边就来说说使用js实现鼠标滑动到某个位置数字自动滚动增加的效果。其实这种效果有很多中解决办法,自己也可以去写,下边我们借助countUp.js来实现,关于这个js文件,我放在末尾:
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2024-04-08 09:20
  • 阅读:265
  • 响应式网页设计思路及注意事项
  • 响应式网页设计思路及注意事项
  • 一、什么是响应式网页响应式网页设计就是让网页具有根据设备类型应用CSS样式的能力。设计:设想、计划。设计就是把想法实现。网页设计:按照一定的设计思路布局网页内容。传统网页设计:都是针对PC端浏览器而设计的,不具备查询设备的能力,更不能对多种访问设备做出响应。传统网页设计的弊端:在移动互联网时代,传统的网页设计不适合多屏幕时代。响应式网页设计应运而生。响应式网页设计是一种设计网页的思想/方法。响应:指让我们的网页能够自动查询用户的访问设备
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2024-04-02 11:24
  • 阅读:172
  • css中rel的属性值都有哪些,分别代表什么意思
  • css中rel的属性值都有哪些,分别代表什么意思
  • 在HTML中,元素的rel属性用于定义当前文档与被链接文档之间的关系。这个属性在CSS的上下文中经常与样式表关联,但rel属性的用途远不止于此。以下是一些常见的rel属性值及其意义:1、stylesheet:表示被链接的文档是一个样式表。这通常用于链接CSS文件。
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2024-03-28 12:28
  • 阅读:302
联系客服
源码代售 源码咨询 素材咨询 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部