Android_数据存储-SQLite

Android中SQLite构造函数参数Context的几点注意事项 最近在写一个Android的程序,用到了SQLite数据库,在主项目中刚开始使用sqlite之前,我先在单独的一个项目中测试了一下SQLite的使用,只有一个Activity,一个SQLiteHelper,使用的时候好好的,当我在主项目中使用的时候就报错了,总是空指针错误,纠结了几天之后终于搞定了,现在我写出来,希望能帮到遇到同样问题的朋友们! 我的测试项目: 结构图: DBHlep 阅读详情


一、SQLite简介
       SQLite,是一款轻量级的关系型数据库。由于它占用的资源非常少,所以在很多嵌入式设备都是用SQLite来存储数据。并且它目前支持Windows/Linux/Unix等等主流的操作系统,兼容性好。我们也可以用多种开发语言如C#、Java、PHP等来通过ODBC接口操作SQLite,十分方便。
       Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点: 
1.轻量级
       使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
2.独立性
       SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
3.隔离性
       SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
4.跨平台
       SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
5.多语言接口
       SQLite 数据库支持多语言编程接口。
6.安全性
       SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。


二、SQLite的使用
1.创建数据库类

public class DatabaseHelper extends SQLiteOpenHelper {
 
    private static final String DB_NAME = "mydata.db"; //数据库名称
    private static final int version = 1; //数据库版本
     
    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, version);
        // TODO Auto-generated constructor stub
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";          
        db.execSQL(sql);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
 
    }
 
}

SQLiteOpenHelper的方法:

方法名 方法描述
SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) 构造方法,一般是传递一个要创建的数据库名称那么参数
onCreate(SQLiteDatabase db) 创建数据库时调用
onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion) 版本更新时调用
getReadableDatabase() 创建或打开一个只读数据库
getWritableDatabase() 创建或打开一个读写数据库

2.创建数据库
通过调用SQLiteOpenHelper类的getReadableDatabase()方法来实现创建一个数据库

DatabaseHelper database = new DatabaseHelper(getContext());
SQLiteDatabase db = null;
db = database.getReadalbeDatabase();

SQLiteDatabase类常用的方法:

(返回值)方法名 方法描述
(int) delete(String table,String whereClause,String[] whereArgs) 删除数据行的便捷方法
(long) insert(String table,String nullColumnHack,ContentValues values) 添加数据行的便捷方法
(int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 更新数据行的便捷方法
(void) execSQL(String sql) 执行一个SQL语句,可以是一个select或其他的sql语句
(void) close() 关闭数据库
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 查询指定的数据表返回一个带游标的数据集
(Cursor) rawQuery(String sql, String[] selectionArgs) 运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)

3.数据的增删改查
     数据的增删改查可以通过两种方式来实现,一种是android封装好的方法,一种是通过执行sql语句
(1)数据的添加
使用insert方法

<pre name="code" class="java">ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据
cv.put("username","Jack Johnson");//添加用户名
cv.put("password","iLovePopMusic");//添加密码
db.insert("user",null,cv);//执行插入操作


使用execSQL方式来实现

String sql = "insert into user(username,password) values ('Jack Johnson','iLovePopMuisc');//插入操作的SQL语句
db.execSQL(sql);//执行SQL语句

(2)数据的删除

使用delete方法

String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Jack Johnson"};//删除的条件参数
db.delete("user",whereClause,whereArgs);//执行删除

使用execSQL方式的实现

String sql = "delete from user where username='Jack Johnson'";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作
(3)数据修改
使用update的方法

ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("password","iHatePopMusic");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Jack Johnson"};//修改条件的参数
db.update("user",cv,whereClause,whereArgs);//执行修改

使用execSQL方式的实现

String sql = "update [user] set password = 'iHatePopMusic' where username='Jack Johnson'";//修改的SQL语句
db.execSQL(sql);//执行修改
(4)数据查询
通过query实现查询的

public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

各参数说明:
table:表名称
colums:列名称数组
selection:条件子句,相当于where
selectionArgs:条件语句的参数数组
groupBy:分组
having:分组条件
orderBy:排序类
limit:分页查询的限制
Cursor:返回值,相当于结果集ResultSet


针对游标(Cursor)也提供了不少方法

方法名称 方法描述
getCount() 总记录条数
isFirst() 判断是否第一条记录
isLast() 判断是否最后一条记录
moveToFirst() 移动到第一条记录
moveToLast() 移动到最后一条记录
move(int offset) 移动到指定的记录
moveToNext() 移动到吓一条记录
moveToPrevious() 移动到上一条记录
getColumnIndex(String columnName) 获得指定列索引的int类型值

实现代码

Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标
if(c.moveToFirst()){//判断游标是否为空
    for(int i=0;i<c.getCount();i++){
        c.move(i);//移动到指定记录
        String username = c.getString(c.getColumnIndex("username");
        String password = c.getString(c.getColumnIndex("password"));
    }
}

通过rawQuery实现的带参数查询

Cursor c = db.rawQuery("select * from user where username=?",new Stirng[]{"Jack Johnson"});
if(cursor.moveToFirst()) {
    String password = c.getString(c.getColumnIndex("password"));
}





Android数据存储方式—SQLite Android数据存储方式—SQLite 版权声明:本文为博主原创文章,未经博主允许不得转载。 SQLite Android平台嵌入了一个关系型数据库SQLite,和其他数据库不同的是:SQLite存储数据时,不需要指定数据类型 一个字段声明为Integer类型,我们可以将一个字符串存入;一个字段声明为Boolean,我们也可以存入浮点数。 除非是主键被定义为integer,这时只能存储6 阅读详情

相关推荐

实验 Android数据存储和访问-SQLite(一)

一  实验现象 创建表 添加数据 更新数据 删除数据 查询 二   实验部分代码 Mainactivity package com.example.sqllite; import android.app.Activity; import android.content.ContentValues; import android.da

gentlehu的博客 2244

ANDROID开发之SQLite详解

SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。 3.隔离性 ...

weixin_30487317的博客 359

MultiOTP Credential Provider避坑指南:从安装到RDP双因素认证的全流程解析

本文详细解析了MultiOTP Credential Provider从安装到实现RDP双因素认证(MFA)的全流程,重点分享了Docker部署、Active Directory集成及网络级认证(NLA)兼容性等环节的实战避坑经验,旨在帮助运维人员高效、稳定地部署离线双因素认证方案,提升Windows远程桌面安全性。

weixin_29255731的博客 642

Android之SQLite数据库使用

SQLite是Android系统集成的一个轻量级的数据库。Android提供了SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。

qq_38056514的博客 7380

MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据

FLIRT(FMRIB 的线性图像配准工具)是用于线性(仿射)模态内和模态间脑图像配准的全自动稳健且准确的工具。 什么是配准 在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够 因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图 对齐这些解剖结构的过程就叫做配准(register) 因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个

Tina姐的博客 1万+

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 943

Android中的Sqlite数据库操作总结

Android中的Sqlite数据库操作总结

weixin_42602900的博客 2632

Windows11安装UE4+Airsim

Windows11安装UE4+Airsim

Legendyyy的博客 3743

安卓 - 使用SQLite数据库

SQLite是D. Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。

IKZWJ0516的博客 3646

自制JS某课脚本

根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行

2301_81243054的博客 3458

全景相机APP

以下是一款**全景相机APP**的完整源码,支持全景照片拍摄(多帧拼接)、全景预览、鱼眼矫正、图片保存/分享、360°全景查看等核心功能,基于Android原生Camera2 API(替代过时的Camera API) + OpenCV(图像拼接) + GLSurfaceView(全景预览)实现,适配Android 8.0+设备,可直接编译运行。runOnUiThread(() -> tvFrameCount.setText("已拍摄:" + frameCount + "帧"));// X轴旋转(上下)

寒寒豆豆软件公司的博客 180

安卓开发(三)数据存储机制、文件IO、SQLite

文章目录SharedPreferences SharedPreferences

芸兮的博客 1814

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3202

安卓 sqlite数据存入mysql_详解Android数据存储—使用SQLite数据库

SQLite是Android自带的关系型数据库,是一个基于文件的轻量级数据库。Android提供了3种操作数据的方式,SharedPreference(共享首选项)、文件存储以及SQLite数据库。SQLite数据库文件被保存在/data/data/package_name/databases目录下。一、创建和删除表1.创建表创建表的SQL语句为:CREATE TABLE userInfo_bri...

weixin_42340136的博客 623

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 669

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

掌握Android数据存储的利器:SQLite实战指南

掌握Android数据存储的利器:SQLite实战指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在移动应用开发中,数据存储是不可或缺的一环。对于Android开发者而言,SQLite是一个强大且灵活的内置数据库解决方案。为了帮助初学者和中级开发者快速掌握SQLite的使用,我们推出了“Android之SQLite数据存储”项目。这个项目不仅提供了完整的代码示例,...

gitblog_09742的博客 370

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android本地数据存储(SP、SQLite、Room)

Android本地数据存储常用的有三种方式 1、SP存储,key-value的方式存储在本地的xml文件中,/data/data/xxx.xx/shared_prefs/xxx.xml 2、sqlite存储 3、room存储。

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 6478

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

安卓 sqlite数据存入mysql_Android数据存储——SQLite数据库存储

一 创建数据库1.创建一个 “数据库管理器” 实体类来继承 SQLiteOpenHelper抽象类。其中需要重写两个方法用于创建数据库和升级数据库:onCreate()和onUpgrade()。2.数据库管理器的构造方法接收四个参数。第一个是context(环境),第二个是数据库名,第三个是查询数据返回的自定义的cursor、一般都是null,第四个是数据库的版本号。3.数据库管理器实例的两种方法...

weixin_42102401的博客 429

Android数据存储之SQLite

概览 l  概述 l   CRUD方法详解 l  注意事项   概述 对于大量数据的处理,如果不想将数据存于服务器端,Android API提供了对关系数据库SQLite的支持,在android-SDK中tool目录下已经提供了SQLite的应用程序,用于管理数据库中的数据。当android应用使用SQLite进行数据存储的时候,SQLite数据库是以文件的形式存放在SD卡中的。   Androi...

u011555996的博客 269

android笔记21-数据存储之SQLite

数据存储之SQLite android中的SQLite: SQLite的常用函数:   Cursor类:   SQLiteDatabase:  在android中,默认每个程序的数据库是唯一的且不互相干扰; 步骤(调用SQLite自己的语句来完成操作):  第一步:创建数据库并打开;创建SQLiteDatabase对象并

成为大soft虫的梦想屋 651

Android 数据存储----SQLite

数据库  SQLite   Oracle    SQLServer   mySql  SQLite  关系型数据 SQLite 数据库 Android系统中集成了轻量级的数据SQLite 一, 特点:   轻量级  只有一个动态的库, 是以单个文件的形式进行存取 零配置 无需安装 跨平台  支持多个操作系统 嵌入式  嵌入手机         在程序

nkdwslsd的专栏 631

Android学习 数据存储 SharedPreference、SQLite

作为一个完整的应用程序,数据的存储与操作是必不可少的。Android系统为我们提供了四种数据存储 方式,分别是:SharedPreference、SQLite、File和ContentProvider。 SharedPreference:一种常用的数据存储方式,其本质就是基于xml文件存储键值对(key-value)数 据,通常用来存储一些简单的配置信息。 SQLite:一个轻量级的数据库,支持基本SQL语法,是Android系统中常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQ

qq_40809198的博客 601

Android数据存储之SQLite存储

在上一篇文章:http://blog.youkuaiyun.com/qq_34942689/article/details/65633451 中简单的介绍了一下Android中用于数据存储的一些方式,上一篇文章中介绍了SharedPreferences的使用以及我个人的一些封装,接下来呢就来介绍一下Android存储提供的数据存储方式的第二个SQLite数据存储。 SQLite是一种转为嵌入式的轻量级的数据

qq_34942689的博客 903

安卓数据存储宝典:SharedPreferences、SQLite 数据库、文件系统

在安卓应用开发中,数据存储是至关重要的环节,它决定了应用如何保存用户数据、设置和状态。SharedPreferences 是一个轻量级的键值对存储方案,适合存储简单的配置数据、用户偏好设置等。文件系统是安卓提供的一种通用存储机制,可以存储各种类型的数据,包括文本、图片、音频等。SQLite 数据库是嵌入式数据库,适用于存储结构化数据,如用户信息、交易记录等。希望本教程能帮助你深入了解安卓数据存储方式,并选择最合适的方案来满足你的应用需求。,并提供丰富实例和代码,助力你掌握数据存储技巧。

u011464172的专栏 1265

Android SQLite数据存储

SQLite是一款轻量级的关系型数据库,它的运行速度非常快,占用资源很少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用,SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务,所以只要你以前使用过其他的关系型数据库,就可以很快的上手SQLite,而SQLite又比一般的数据库要简单很多,它甚至不用设置用户名和密码就可以使用,Android正是把这个功能极为强大的数据库嵌

在路上的大蜗牛 487

Android数据存储选项:SQLite、Room等

Room是Android Jetpack架构组件的一部分,旨在简化SQLite数据库的操作。它为开发者提供了一种方便的方式来定义实体类、DAO(数据访问对象)接口以及数据库的初始化。Room在背后使用了SQLite数据库来存储数据,但在开发者的视角下提供了更高层次的抽象。

虎哥LoveDroid 2383
上一篇: Android_数据存储-SharedPreferences
下一篇: JAVA_枚举
Two_Water
博客等级 码龄12年 573粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值