首页 > 数据库 >Android sqlite 使用简介

Android sqlite 使用简介

时间:2023-01-13 11:37:27浏览次数:50  
标签:sqlite 简介 数据库 SQLiteOpenHelper 获取 Context Android 方法

进行Android应用开发时经常会用到数据库。Android系统支持sqlite数据库,在app开发过程中很容易通过SQLiteOpenHelper使用数据库,SQLiteOpenHelper依赖于Context对象,但是基于uiatomator1.0和Java程序等无法获取Context的应用如何使用数据库呢?

通过以下方面介绍一下数据库的使用:

①. Android App内如何创建数据库

②. Android App内创建数据库如何自定义文件路径

③. Android App内获取数据库流程解析

④. 无Context模式使用数据库,可在uiautomator1.0测试框架和其他app_process启动的进程内使用数据库。

App内常规使用数据库

Android应用内使用数据库需要借助于SQLiteOpenHelper类实现对数据库的操作。

使用数据库通过以下几步:

①. 创建私有类集成自SQLiteOpenHelper方法,并覆写onCreate、onUpdate方法实现对数据库升级降级操作。

②. 获取SQLiteOpenHelper对象实例。

③. 获取只读、读写类型数据库SQLiteDatabase对象实例

(getReadableDatabase()/getWritableDatabase()),当数据库升级或创建时才会调用onCreate、onUpdate方法。

④. 使用SQLiteDatabase接口实现数据库操作(增删改查)

Android sqlite 使用简介_SQL

数据库源码解析

1、SQLiteOpenHelper构造方法中仅仅做了参数的赋值操作,没有关联数据库操作。但是对数据库版本号有校验。

Android sqlite 使用简介_获取数据_02

2、通过getWritableDatabase()方法获取数据库对象,实际是调用getDatabaseLocked(boolean writable)方法。

Android sqlite 使用简介_获取数据_03

3、getDatabaseLocked(boolean writable)方法主要源码如下,该方法关联数据库文件获取SQLiteDatabase对象,并根据数据库的版本号变化调用SQLiteOpenHelper的周期方法,实现数据库onCreate和onUpgrade方法调用。

Android sqlite 使用简介_SQL_04

4、通过源码知道

mContext.getDatabasePath(mName).getPath()方法获取数据库路径,该方法实现位于ContextImpl类中。看源码逻辑知道如果传递数据库文件绝对路径则返回指定的文件对象,如果传递文件名则通过Context的getDatabasesDir()方法获取数据库存储路径。

Android sqlite 使用简介_数据库_05

自定义本地数据库文件路径

通过上面源码可以获知修改数据库文件路径有三种方式:

1

更改context中getDatabasesDir()方法的返回值;

2

构建SQLiteOpenHelper对象时传递数据库文件的绝对路径;

3

覆写SQLiteOpenHelper对象的获取数据库方法,自定义获取数据库获取逻辑,这种实现模式不需要依赖Context对象。

**1、更改context中getDatabasesDir()的返回值 **

①、自定义Application

②、覆写Application的getDatabasePath(String name)方法,在方法内指定自定义路径。

③、在AndroidManifest.xml中指定自定义Application

Android sqlite 使用简介_数据库_06

2、构建数据库时传入绝对路径:必须使用Context对象

Android sqlite 使用简介_数据库_07

3、在SQLiteOpenHelper子类中覆写

getWritableDatabase()和

getReadableDatabase():可不使用Context

Android sqlite 使用简介_SQL_08

使用建议

调用getWritableDatabase()获取数据库时会重新创建数据库实例,一般在程序中复用该数据库实例即可,如果保存多份数据库实例会导致OOM异常。

执行数据库操作时尽量使用API操作,不要自己拼接sql语句,避免sql注入相关问题。

标签:sqlite,简介,数据库,SQLiteOpenHelper,获取,Context,Android,方法
From: https://blog.51cto.com/u_15640304/6005840

相关文章

  • AEAD加密算法简介
    copyfrom:https://ez.analog.com/ez-blogs/b/engineerzone-spotlight/posts/authenticated-encryption如果仅仅加密,显然只能保证confidentiality,不能证明message是否被......
  • Android Studio实现数据库的所有操作
    采用androidstudio自带的数据库实现stu数据库和stu表的创建,增删改查和关闭这是项目的大致结构主界面子界面布局源码<!--Main--><?xmlversion="1.0"encodin......
  • JS简介
    JS历史JavaScript诞生于1995年。NetSpace发布NetspaceNavigator2浏览器,提供了免费开发工具LiveScript,设计的主要目的是处理以前由服务器端语言负责的一些输入验证操......
  • Android NDK历史版本下载网址
    NDK 大约每季度发布一次。指定一年发布一次作为一个长期支持(LTS)版本,它将接收反向移植,直到下一个LTS已发布。每个版本首先作为测试版发布,然后发布候选人在被运送到稳......
  • Android:如何在后台启动Activity
     通常我用这段代码开始一个活动:Intenti=newIntent(context,MyActivity.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);......
  • Kubernetes组件简介
    Kubernetes组件简介Kubernetes(简称k8s)致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。k8s是什么一个基于容器技术的分布式架构一个一站式......
  • 死锁简介
    哲学家就餐的问题。死锁:互相等待对方持有的资源而造成的谁的无法执行的情况叫做死锁。死锁处理:死锁预防死锁避免:判断一下该时间有没有一个进程处于安全序列死锁检测+......
  • Android Volley 基本使用
    AndroidVolley基本使用本篇主要介绍Google给Android平台提供的Volley一个Http请求库,齐射!1.概述Volley是Google提供的一个小巧的异步请求库,扩展很强支......
  • 关于android的图像视图的基本了解
     最好直接复制进去而不是拖进去图片直接导入最好用小写字母命名,数字与字母之间要用_,而且数字好像不可以连用   centerInside,fitCenter,center的区别:centerIns......
  • Python中数据库模块(sqlite3,SQLite3)应用
    一、sqlite命令创建数据库:在控制台sqlite3name.databases查看数据库.tables查看表格名databaseName.d......