Android开发——SQLite数据库的使用

Android开发——SQLite数据库的使用

文章目录:

  • Android开发——SQLite数据库的使用
    • 一、认识SQLite
      • 1、SQLite的特性
      • 2、SQLite的适用场景
    • 二、SQLite在Android开发中的应用
      • 1、工具类的编写
      • 2、信息的插入
      • 3、信息的读取

一、认识SQLite

1、SQLite的特性

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite是直接访问其存储文件。
SQLite不需要额外的配置以及轻量化是最大的优点

2、SQLite的适用场景

(1)嵌入式设备:它可以在资源有限的设备上运行,不需要独立的服务器。
(2)测试和原型开发:SQLite可以快速创建和测试应用程序的原型,因为它不需要安装或配置服务器。

二、SQLite在Android开发中的应用

在Android中应用程序需要处理大量并发连接、高并发读写等高负载场景,SQLite可能会表现出性能瓶颈,不如传统的关系型数据库管理系统(RDBMS),因此不建议在这些场景中使用SQLite。
所以SQLite可以用在单机程序上,不适用联网数据。

1、工具类的编写

先继承系统给的SQLiteOpenHelper类,建立一个表。这里我建立了一个username和password。

public class DatabaseHelper extends SQLiteOpenHelper {public static final String USER="create table user("+"id integer primary key autoincrement,"+"username text,"+ "password text)";private Context mContext;public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int vertion){super(context,name,factory,vertion);mContext=context;}@Overridepublic void onCreate(SQLiteDatabase db){System.out.println(USER);db.execSQL(USER);}@Overridepublic void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){}
}

在onCreate方法里面,防止第一次点击的时候,没有user.db这个文件,因此写了一个创建db文件的代码。

2、信息的插入

我们向表中插入数据,我们需要一行插入进表,这样数据写入更有效率。
首先我们需要先定义一个容器对象,用于储存多条信息。

ContentValues values=new ContentValues();
values.put("username","lemon");
values.put("password","123456");

.put()函数中,第一个参数是表头的名称,第二个参数为输入的值。
在插入数据之前,需要先声明一个SQLite的对象。此处采用.getWritableDatabase()方法指以写的方式打开数据库。同理以读的方式打开数据库为.getReadableDatabase()

SQLiteDatabase db=dbHelper.getWritableDatabase();

当需要组装的数据输入完成后,就可以进行下一步插入了。这里使用SQLite的命令insert进行操作。

db.insert("user",null,values);

.insert()函数中第一个数据为表的名称,最后一个为内容。
最后清空values容器对象中的数据即可。

values.clear();

完整代码:

SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("username","lemon");
values.put("password","123456");
db.insert("user",null,values);
values.clear();

3、信息的读取

当我们需要实现登录功能,此时需要从数据库中读取内容。我们先需要建立一个数据库对象,以读的方式打开,并指定数据库的位置。

SQLiteDatabase db=dbHelper.getReadableDatabase();
Cursor cursor=db.query("user",null,null);

.query()函数第一个参是表名,第二个是第一个表头,第三个是第二个表头。当表头为null的时候为全部读取。
读取出来的内容也需要一个临时存储,用于用户输入的进行比较。

String name=cursor.getString(cursor.getColumnIndex("username"));//比对用户信息if (name.equals(user)){String ps=cursor.getString(cursor.getColumnIndex("password"));if (ps.equals(password)){}

其中.getColumnIndex()函数是在读取指定的表头下内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/16386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt源码--事件系统之QAbstractEventDispatcher

1、QAbstractEventDispatcher内容较少,其主要是定义了一些注册接口,如定时器事件、socket事件、注册本地事件、自定义事件等等。其源码如下: 其主要定义了大量的纯虚函数,具体的实现会根据不同的系统平台,实现对应的方…

软件测试员的非技术必备技能

成为软件测试人员所需的技能 非技术技能 以下技能对于成为优秀的软件测试人员至关重要。 将您的技能组合与以下清单进行比较,以确定软件测试是否适合您 - 分析技能:优秀的软件测试人员应具备敏锐的分析能力。 分析技能将有助于将复杂的软件系统分解为…

leetcode300. 最长递增子序列 子序列(不连续)

https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如&#x…

LeetCode每日一题Day1——买卖股票的最佳时机

✨博主:命运之光 🦄专栏:算法修炼之练气篇(C\C版) 🍓专栏:算法修炼之筑基篇(C\C版) 🐳专栏:算法修炼之练气篇(Python版) ✨…

Ribbon源码

学了feign源码之后感觉,这部分还是按运行流程分块学合适。核心组件什么的,当专业术语学妥了。序章:认识真正のRibbon 但只用认识一点点 之前我们学习Ribbon的简单使用时,都是集成了Eureka-client或者Feign等组件,甚至在…

开发一个RISC-V上的操作系统(五)—— 协作式多任务

目录 往期文章传送门 一、什么是多任务 二、代码实现 三、测试 往期文章传送门 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导程序&a…

UE5.0.3 widget截图问题

遇到了一个特殊需求:我们需要给特定的widget进行截图,该widget正在播放一个视频 新建一个UFunctionLibrary类,我们使用FSlateApplication类里面的TakeScreenShot()函数进行截图。 具体代码如下: void UShotFunctionLibrary::Sho…

Mac下certificate verify failed: unable to get local issuer certificate

出现这个问题,可以安装证书 在finder中查找 Install Certificates.command找到后双击,或者使用其他终端打开 安装完即可

C#+GDAL影像处理笔记08:读取dxf文件中的多边形并统计其面积

目录 1 概述 2 dxf解析核心API 2.1 代码框架 2.2 不同类型的几何对象 2.3 重要属性介绍

【机器学习】Cost Function

Cost Function 1、计算 cost2、cost 函数的直观理解3、cost 可视化总结附录 首先,导入所需的库: import numpy as np %matplotlib widget import matplotlib.pyplot as plt from lab_utils_uni import plt_intuition, plt_stationary, plt_update_onclic…

【Github】自动监测 SSL 证书过期的轻量级监控方案 - Domain Admin

在现代的企业网络中,网站安全和可靠性是至关重要的。一个不注意的SSL证书过期可能导致网站出现问题,给公司业务带来严重的影响。针对这个问题,手动检测每个域名和机器的证书状态需要花费大量的时间和精力。为了解决这个问题,我想向…

【bar堆叠图形绘制】

绘制条形图示例 在数据可视化中,条形图是一种常用的图表类型,用于比较不同类别的数据值。Python的matplotlib库为我们提供了方便易用的功能来绘制条形图。 1. 基本条形图 首先,我们展示如何绘制基本的条形图。假设我们有一个包含十个类别的…

VS附加到进程调试

操作: 要附加到进程中调试外部可执行文件,您需要使用Visual Studio的“调试附加”功能。以下是附加到进程中调试外部可执行文件的步骤: 打开您要调试的源代码文件或可执行文件。打开Visual Studio。选择“调试”菜单,然后选择“…

轮趣科技教育版ros小车键盘控制运动

我之前买的ros小车是单独买的底板,以为随便一个树莓派就可以,因为我以前有一个树莓派3B,后来买了单独的小车之后,发现只能使用树莓派4B,然后又单独买了一个树莓派4B,给装上镜像,安装ros-melodic…

kotlin 编写一个简单的天气预报app(二)增加搜索城市功能

增加界面显示openweathermap返回的信息。 在activity_main.xml里增加输入框来输入城市&#xff0c;在输入款旁边增加搜索按钮来进行查询。 然后原来显示helloworld的TextView用来显示结果。 1. 增加输入城市名字的EditText <EditTextandroid:id"id/editTextCity"…

用于永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制(MatlabSimulink实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码&Simulink仿真实现 &#x1f4a5;1 概述 本文方法基于状态依赖的里卡蒂方程&#xff08;SDRE&#xff09;控制技术及其梯度型神经网络的实时计算方法&#xff0c;允许…

vue拼接html点击事件不生效

vue使用ts&#xff0c;拼接html&#xff0c;点击事件不生效或者报 is not defined 点击事件要用onclick 不是click let data{name:测,id:123} let conHtml <div> "名称&#xff1a;" data.name "<br>" <p class"cursor blue&quo…

第九十八回 如何实现本地存储

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了"如何自定义评分条"相关的内容&#xff0c;本章回中将介绍 如何实现本地存储&#xff0c;闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 Flutter是一套跨平台的UI框架&#xff0c;它不像原生…

理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)

本博客是一系列文章中的第一篇&#xff0c;解释了为什么使用大型语言模型&#xff08;LLM&#xff09;部署专用领域聊天机器人的主流管道成本太高且效率低下。在第一篇文章中&#xff0c;我们将讨论为什么矢量数据库尽管最近流行起来&#xff0c;但在实际生产管道中部署时从根本…

网络安全 Day23-mariadb数据库数据管理和备份

mariadb数据库数据管理和备份 1. 管理数据库中的库2. 管理库中的表3. 管理表中的字段(列)4. 管理表中的数据(行)5. 数据库数据备份与恢复 1. 管理数据库中的库 进入指定数据库: use 数据库名字库的增删改查 创建数据库: create database 数据库名字指定字符及创建数据库: CREA…