没有合适的资源?快使用搜索试试~ 我知道了~
首页Android应用:SQLite轻型数据库详解及实战
Android应用:SQLite轻型数据库详解及实战
0 下载量 155 浏览量
更新于2024-08-29
收藏 106KB PDF 举报
本文将深入探讨Android持久化存储中的关键组件——SQLite数据库的使用。SQLite是一款由C语言编写的轻量级关系型数据库管理系统,由于其低资源占用、快速处理速度和高度灵活性,尤其适合移动设备,如Android和iOS平台。SQLite的特点在于其弱类型系统,这意味着在创建表时虽然需要指定列的基本类型,但允许动态插入不同类型的值,SQLite会尝试将其转换为对应列的类型,若无法转换则保持原数据类型存储。 SQLite支持的主要数据类型包括NULL(空值)、INTEGER(有符号整数)、REAL(浮点数)、TEXT(文本字符串,使用UTF-8等编码)和BLOB(二进制数据块)。这些数据类型提供了丰富的数据表示能力,使得SQLite能够适应各种应用场景的需求。 在Android开发中,SQLiteOpenHelper是Android提供的重要工具,它是一个抽象基类,用于管理SQLite数据库的生命周期和版本管理。onCreate()方法在初次创建数据库时执行,用于初始化数据库结构;onUpgrade()方法在升级数据库版本时调用,用于更新旧表结构以适应新版本。通过SQLiteOpenHelper,开发者可以方便地实现数据库的创建、读取、修改和删除操作,确保应用的前后版本间数据的兼容性和一致性。 在实际应用中,开发者需遵循一些最佳实践,例如使用事务来确保数据一致性,以及正确处理异常情况。此外,还要注意适配Android的多线程模型,以避免在主线程中直接操作数据库导致界面卡顿。SQLite是Android应用中实现数据持久化存储的重要手段,熟练掌握其使用对于构建高效、稳定的应用至关重要。
资源详情
资源推荐
Android持久化存储持久化存储(3)SQLite数据库的使用数据库的使用
1.什么是什么是SQlite
SQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,
任何人都可以使用它,许多开源项目(PHP,Python)和当今两大手机操作系统Android和iOS都使用了SQLite,造就了SQLite成
为目前世界上最常见的数据库引擎。
2.SQLite特点特点
除了占用资源小,处理速度快等优点,SQLite还有自己的特点,那就是支持弱数据类型,其他主流SQL数据库通常支持强类
型的数据,也就是每一列的类型都必须预先指定,如果输入的数据和指定数据类型对不上则报错,而SQLite采用的是弱类
型,也就是说,创建一个表时指定某列的数据类型,但是你可以把任何数据类型插入该列,SQLite将检查它的类型,如果该
类型与关联的列不匹配,则SQLite会尝试将该值转换成该列的类型,如果不能转换,则该值将作为其本身具有的类型存储。
SQLite支持数据类型如下:包括NULL、INTEGER、REAL、TEXT和BLOB
NULL: 该值是空值;
INTEGER: 该值是一个有符号整数,根据值的大小以1、2、3、4、6或8个字节存储;
REAL: 该值是一个浮点值,以8字节浮点数存储;
TEXT: 该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储;
BLOB: 值是BLOB数据块,以输入的数据格式进行存储。
3.Android使用使用SQLite
上文已说,Android集成了SQLite数据库,与此同时,Android还提供了使用SQLite数据库的API,可通过这些API可很方便的
进行数据库操作。
3.1 SQLiteOpenHelper介绍介绍
SQLiteOpenHelper是Android提供的SQLite帮助类,用于管理数据库(包括创建、增,删,改)和管理数据库的版本,方便开
发者操作SQLite,SQLiteOpenHelper基本方法如下(更相信请参考官方文档
https://developer.android.google.cn/reference/android/database/sqlite/SQLiteOpenHelper?hl=zh-cn)
方法名方法名 描述描述
onCreate()
首次创建数据库时执行该方法,如果数据库不存在则创建,onCreate()方法在初次调用时才会被调
用。重写onCreate()方法时,生成数据表结构
onUpgrade()
在需要升级数据库时调用方法,该方法检测数据库传入的版本号与当前的版本号是否相同,如果传
入的版本号高于之前的版本,触发该方法
getReadableDatabase() 创建或者打开可读数据库
getWritableDatabase() 创建打开可读/写的数据库
close() 关闭所有打开的数据库对象
onCreat和onUpgrade是开发者实现,由SQLiteOpenHelper来调用。
其中onCreat是SQLiteOpenHelper在尝试找数据库时,如果没有找到则执行该方法,那么什么时候SQLiteOpenHelper去找数
据库呢?是在创建SQLiteOpenHelper实例时,还是使用SQLiteOpenHelper的getWritableDatabase()或者
getReadableDatabase()获取SQLiteDatabase时?
我们可以用代码来验证一下,我们在继承了SQLiteOpenHelper的MySQLiteOpenHelper代码里面添加一个flag作为标记,flag
初始值是0,然后在构造函数里赋值成100,最后在onCreate中添加打印代码。然后我们在Activity里首先只实例化
MySQLiteOpenHelper,不获取数据库,看是否触发了onCreate里的打印信息。之后再添加java SQLiteDatabase sqLiteDatabase=
mySQLiteOpenHelper.getWritableDatabase();获取数据,再看打印信息。
Activity代码如下:
package com.test.sqlitedemo;
import androidx.appcompat.app.AppCompatActivity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
下载后可阅读完整内容,剩余4页未读,立即下载
weixin_38718262
- 粉丝: 9
- 资源: 950
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功