安卓用SQLite数据库存储数据

什么是SQLite?

SQLite是安卓中的轻量级内置数据库,不需要设置用户名和密码就可以使用。资源占用较少,运算速度也比较快。

SQLite支持:null(空)、integer(整形)、real(小数)、text(文本)|String(文本)|varchar(文本)、blob(二进制)这5种数据类型。

如何使用SQLite数据库?

在这之前先介绍一下SQLiteOpenHelper类。该类是安卓为了让用户方便管理数据库而提供的一个数据库帮助类。我们需要借助这个类来实现对数据的创建(也就是用户需要自己创建一个类来继承SQLiteOpenHelper类。比如自己创建类:MyDBOpenHelper)。

第一步:创建一个MyDBOpenHelper类继承SQLiteOpenHelper类。

1.在安卓目录模式下,找到包该APP的包,接着右键选择新建,接着创建一个包(比如:DB)。

2.选中DB包,接着右击选择新建类,创建一个 MyDBOpenHelper类。

3.在MyDBOpenHelper类中写继承SQLiteOpenHelper类。

4.将鼠标放在红色波浪线上,按Alt+Enter组合键解决该报错问题(由于SQLiteOpenHelper类是抽象类,所以需要在该类添加两个抽象方法)。

5.将鼠标继续放在红色波浪线上,按Alt+Enter组合键解决(添加帮助类的构造方法,选择参数少的第一种)。

该种构造方法的参数:参数1为Context;参数2为数据库名;参数3为在查询数据的时候返回自定义的Cursor,一般都是传入null;参数4为数据库版本号。

二、定义数据库名称和数据库版本号。

在实际的过程中只保留第一个参数,后3个参数删除,并定义数据库名称和版本,修改一下代码即可,具体如下:

这里定义了数据库名为:student.db,数据库版本为1。

在安卓中数据库的保存位置在:/data/data/工程的包名/databases/

三、定义建表语句。(创建数据表)

1.找到onCreate方法

2.在onCreate方法中写创建数据表的语句。

在此方法中调用SQLiteDatabase的execSQL()方法去执行创建数据表。

如创建学生信息表stu_info 表中包含字段名(列名):学号 姓名 性别

sql 复制代码
sqLiteDatabase.execSQL("create table stu_info(id INTEGER primary key autoincrement,sno varchar(10),name varchar(10),sex varchar(10))");
四、添加数据(insert方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为六步:

复制代码
//1.定义数据库帮助类对象
复制代码
//2.定义一个可以操作数据库的对象
复制代码
//3.实例化数据库帮助类
复制代码
//4.打开数据库的写权限
复制代码
//5.创建一个Content Values对象并通过put方法来保存一行数据(其中put方法两个参数:字段名,值)
复制代码
//6.使用insert方法实现添加数据

inset()方法语法:

insert("表名","在没指定添加数据的情况下将为空的列自动设置为NULL","Content Values对象")

其中Content Values对象用来保存表中一行数据。第二个参数一般用不到设置为null即可。

综上所述,可以以一下代码来表示这六步(这里是在主页面类):

上面在主页面的代码表示一运行APP就会向数据库中添加信息。put方法中写的字段的值是从控件中获取的(这里没有写控件所以会报错)。具体使用方法可以根据这个类推。比如点击一个按钮时执行添加向数据库中添加数据。

五、删除数据(delete方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

复制代码
//1.定义数据库帮助类对象
复制代码
//2.定义一个可以操作数据库的对象
复制代码
//3.实例化数据库帮助类
复制代码
//4.打开数据库的写权限
复制代码
//5.使用delete方法实现删除数据

delete()方法语法:

delete("表名","条件=?","?占位符所代表的条件的取值")

例如删除id字段等于12的一行数据:delete("表名","id=?",new String\[\]{"12"})

综上所述,可以以一下代码来表示这五步(这里是在主页面类):

上面在主页面的代码表示一运行APP就会删除数据库中id=12的数据。具体使用方法可以根据这个类推。比如点击一个按钮时删除数据。或者这个条件的值(这里指12)可以来源于输入框控件等。

六、查询数据(rawQuery方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

复制代码
//1.定义数据库帮助类对象
复制代码
//2.定义一个可以操作数据库的对象
复制代码
//3.实例化数据库帮助类
复制代码
//4.打开数据库的读权限
复制代码
//5.使用rawQuery方法实现查询数据并通过moveToNext()遍历结果后取出数据,最后通过set方式给用于显示查询结果的控件赋值显示出来。

rawQuery方法语法:

rawQuery("查询语句......where=?","?占位符所代表的条件的取值")

例如查询id字段等于12的一行数据:rawQuery("select * from stu_info where id=?",new String\[\]{"12"})

综上所述,可以以一下代码来表示这五步(这里是在主页面类):

上面在主页面的代码表示一运行APP就查询数据库中id=12的数据。具体使用方法可以根据这个类推。比如点击一个按钮时查询数据。或者这个条件的值(这里指12)可以来源于输入框控件等。(红色波浪线报错用Alt+Enter解决即可)

七、修改数据(update方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

复制代码
//1.定义数据库帮助类对象
复制代码
//2.定义一个可以操作数据库的对象
复制代码
//3.实例化数据库帮助类
复制代码
//4.打开数据库的写权限
复制代码
//5.创建一个Content Values对象并通过put方法来保存一行数据(其中put方法两个参数:字段名,值)
复制代码
//6.使用updata方法实现添加数据

updata方法语法:

updata("表名",Content Values对象,"条件=?","?占位符所代表的条件的取值")

例如修改name字段等于张三的一行数据:updata("表名",Content Values对象,"name=?",new String\[\]{"张三"})

综上所述,可以以一下代码来表示这六步(这里是在主页面类):

上面在主页面的代码表示一运行APP就修改数据库中name为张三的性别为控件获取来的值。具体使用方法可以根据这个类推。比如点击一个按钮时修改数据。

相关推荐
java_logo23 分钟前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
A心有千千结1 小时前
GO 使用 OpenTelemetry 进行编译时插桩,实现零码注入
数据库·golang·可观测性·观测云
GreatVicent1 小时前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
大模型码小白2 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna2 小时前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL2 小时前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶2 小时前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba
晚安日记wanna2 小时前
MySQL 主从延迟别只答并行复制
数据库·面试·架构
qq_401700413 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
程序员阿鹏3 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存