Android Studio(数据存储)
数据存储方式
| 方式 | 特点 |
|---|---|
| 文件存储 | openFileInput()和openFileOutput()进行存写 |
| SharedPreferences | 以XML格式进行存储 |
| SQLite | 运算快、占用资源少、支持基本的sql语法 |
| ContentProvider | 可用于应用之间的数据交互 |
| 网络存储 | 通过网络提供的存储空间来存储/获取数据信息 |
文件存储
主要语法
FileOutputStream fos = openFileOutput(String filename,int mode);
FileInputStream fis = openFileInput(String filename);
| mode | desc |
|---|---|
| Context.MODE_PRIVATE | 该文件为当前程序私有 |
| Context.MODE_APPEND | 该文件的内容可以追加 |
| Context.MODE_WORLD_READABLE | 该文件的内容可以被其他程序“读” |
| Context.MODEL_WORLD_WRITEABLE | 该文件的内容可以被其他程序“写” |
代码示例
//参考对象为内存:从内存输出即写入、输入到内存即读取// 1.写入数据到文件
String fileName = "myfile.txt";
String data = "Hello, World!";
try {FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);fos.write(data.getBytes());fos.close();
} catch (IOException e) {e.printStackTrace();
}// 2.从文件中读取数据
try {FileInputStream fis = openFileInput(fileName);InputStreamReader isr = new InputStreamReader(fis);BufferedReader br = new BufferedReader(isr);StringBuilder sb = new StringBuilder();String line;while ((line = br.readLine()) != null) {sb.append(line);}fis.close();String savedData = sb.toString();
} catch (IOException e) {e.printStackTrace();
}
SharedPreferences
简要
以XML方式的轻量级存储,适合存储少量的键值对数据,适用于简单的配置信息、用户偏好设置和应用程序状态等,比如登录的用户名。
语法
// 存储数据到 SharedPreferences
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value");
editor.apply();// 从 SharedPreferences 中读取数据
String savedValue = sharedPreferences.getString("key", "default value");
SQLite
语法
// 1. 创建实现类extends SQLiteOpenHelper
public class DBHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "myDb.db";private static final int DATABASE_VERSION = 1;private Context context;public DBHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);this.context = context;}@Overridepublic void onCreate(SQLiteDatabase db) {}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}// 2. 创建实现类对象,并调用相关方法实现CRUD
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM myTable", null);
while (cursor.moveToNext()){int id = cursor.getInt(cursor.getColumnIndexOrThrow("id"));...
}
cursor.close();
ContentValues
SQLiteDatabase对象自身提供了一些CRUD方法,像表记录添加、修改,理应上需要我们传入多个字段(包括字段名和字段值),而为了解决这个问题就有了ContentValues对象,它允许我们给其增加多个键(字段名)、值(字段值);
所以当我们执行这个SQLiteDatabase对象的自身提供的添加或修改方法只用传入ContentValues即可。
可以参考下面代码例子:
ContentValues values = new ContentValues();
values.put("name", "John Doe");
values.put("age", 30);
values.put("email", "johndoe@example.com");// 插入数据到数据库
long newRowId = db.insert("myTable", null, values);
后言
至于ContentProvider和网络存储这两种存储方式只有结合具体的需求项目才能更好地学习,这里就不介绍了,需要学习的可以自己搜索相关文章具体学习。
相关文章:
Android Studio(数据存储)
数据存储方式 方式特点文件存储openFileInput()和openFileOutput()进行存写SharedPreferences以XML格式进行存储SQLite运算快、占用资源少、支持基本的sql语法ContentProvider可用于应用之间的数据交互网络存储通过网络提供的存储空间来存储/获取数据信息 文件存储 主要语法…...
人,要懂得享受孤独
喜欢在如水的月光下,望一轮洁白的皓月, 喜欢在清寂的夜晚,看那星光流转倏忽间的变幻,牵动心中万千情怀。 独享这份清幽,遐想那月中寻桂子的浪漫。 这个世界太喧闹,偶尔,需要关一关窗,…...
Spring Boot + EasyUI Datebox和Datetimebox样例
使用EasyUI的Datebox和Datetimebox组件,并对其进行适当的改造,比如更改日期格式、设置默认值或者将当前时间设置为默认值。 一、运行结果 二、实现代码 1.代码框架 2.实现代码 SpringBootMainApplication.java: package com.xj.main;import org.spri…...
web前端JS基础------制作一个获取验证码
1,需要一个定时器,和一个button,通过点击事件启动获取验证码 2,参考代码如下 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><…...
MyBatis面经
MyBatis常见面试题 !!本文主要是博主总结看着玩的,不具有很高的参考价值,慎重 1、MyBatis是什么?MyBatis工作原理?MyBatis的使用场景有哪些? MyBatis是一款优秀的持久层框架,它是…...
SpringBoot基础(六)-- 辅助功能之一 -- 内嵌tomcat
目录 1. 内嵌Tomcat定义位置 2. 内嵌Tomcat运行原理 3. 更换内嵌Tomcat 在前面,我们做的SpringBoot入门案例(SpringBoot基础(一)-- 使用idea(2022版)创建一个Springboot项目(联网开发))勾选了Spirng-web的功能&#...
K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示管理
目录 1 部署 CNI 网络组件 1.1 部署 flannel 1.2 部署 Calico 1.3 部署 CoreDNS 2 负载均衡部署 3 部署 Dashboard 1 部署 CNI 网络组件 1.1 部署 flannel K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容…...
「直播回放」使用 PLC + OPC + TDengine,快速搭建烟草生产监测系统
在烟草工业场景里,多数设备的自动控制都是通过 PLC 可编程逻辑控制器来实现的,PLC 再将采集的数据汇聚至 OPC 服务器。传统的 PI System、实时数据库、组态软件等与 OPC 相连,提供分析、可视化、报警等功能,这类系统存在一些问题&…...
私域流量搭建与运营,技巧全攻略!
2023年是比拼运营深度和服务效率的一年,用户对于体验的期望值将持续增长,企业需提供无缝的客户体验,以推动增长、保障收入、确保客户忠诚度。在疫情新常态下,企业已构建起APP、小程序等一系列线上触点矩阵,而各个触点之…...
AWS SAP-C02教程0--课程概述
SAP是亚马逊云的解决方案架构师专业级认证,关于本课程,我会简述已下3点: 在本课程中按照自己的分类讲述考试相关的AWS产品,特别会注明每个产品在考试中可能出现的考点会对一些解决方案做对比,通过一些对比给出不同场景…...
RFC使用与WebService
RFC连接 CSDN RFC中引用类型组 http://t.csdnimg.cn/wQWAYhttp://t.csdnimg.cn/wQWAY 远程目标系统维护SM59 这里的类型指的是目标系统的系统类型(目标系统即rfc函数存在的系统). 类型2(R/2连接),只需给出主机名,所有通信信息…...
打造全球化电商平台,多语言商城系统助您开拓海外市场
全球化进程的加速,越来越多的企业开始将目光投向海外市场。然而,语言和文化差异成为了企业面临的一大挑战。为了帮助企业顺利拓展海外业务,多语言商城系统应运而生。作为一种功能强大的电子商务平台,多语言商城系统具备以下关键功…...
【滑动窗口】篮里到底能装 “几个水果” 呢?
Problem: 904. 水果成篮 文章目录 题目分析算法原理分析暴力枚举 哈希表滑动窗口优化数组再度优化 复杂度Code 题目分析 首先我们来分析一下本题的思路 首先我们通过题目的描述来理解一下其要表达的含义,题目给到我们一个fruit数组,里面存放的是每棵树上…...
newstarctf2022week2
Word-For-You(2 Gen) 和week1 的界面一样不过当时我写题的时候出了个小插曲 连接 MySQL 失败: Access denied for user rootlocalhost 这句话印在了背景,后来再进就没了,我猜测是报错注入 想办法传参 可以看到一个name2,试着传参 发现有回显三个字段…...
集群调度-01
目录 1、调度约束 2、Pod 是 Kubernetes 的基础单元,Pod 启动典型创建过程如下 2.1 工作机制 **** 2.2 调度过程 *** 2.3 Predicate 有一系列的常见的算法可以使用: ** 2.4 指定调度节点 1、调度约束 Kubernetes 是通过 List-Watch **…...
【软件工程】金管局计算机岗位——软件测试的分类(⭐⭐⭐⭐)
软件工程 软件测试的分类从是否关心软件内部结构和具体实现的角度划(⭐⭐⭐⭐)从是否执行代码角度划分(⭐⭐)从软件开发的过程按阶段划分(⭐⭐⭐⭐) 软件测试的分类 考点导读: 软件测试是软件工…...
Halcon WPF 开发学习笔记(1):Hello World小程序
文章目录 文章专栏视频链接Hello World训练图片训练目的 开始训练图像预处理导入图像三通道处理调用算子通道选取 滤波什么是好的滤波 增加对比度 区域选取阈值处理算子参数选择运行结果(红色为选择区域) 区域分割运行结果 特征筛选参数代码第二次,面积筛选 画选中十…...
pix2tex - LaTeX OCR 安装使用记录
系列文章目录 文章目录 系列文章目录前言一、安装二、使用三、少侠请留步,点赞、收藏、关注 前言 项目地址:这儿 一、安装 版本要求 Python: 3.7 PyTorch: >1.7.1 安装:pip install "pix2tex[gui]" 注意:Pyside6…...
前端框架Vue学习 ——(四)Axios
文章目录 Axios 介绍Axios 入门Vue项目中使用 Axios Axios 介绍 介绍: Axios 对原生的 Ajax 进行了封装,简化书写,快速开发。(异步请求) 官网: https://www.axios-http.cn/ 官网介绍:Axios 是一个基于 promise 网络请…...
将json数据导入到ES集群——解决方案对比填坑日记
需求 将写好的json数据。导入到es集群 数据说明 文件JSON数据,一行一个JSON。 {"id":"d2716ae8fba4e026c4bd9445c3f49e2c","lang":"zh","title":"吉美旅馆","content":"吉美..."}…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
标注工具核心架构分析——主窗口的图像显示
🏗️ 标注工具核心架构分析 📋 系统概述 主要有两个核心类,采用经典的 Scene-View 架构模式: 🎯 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 🔧 关键函数&…...
多模态学习路线(2)——DL基础系列
目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization(RMSNorm) 二、激活函数 1. Sigmoid激活函数(二分类&…...
uni-app学习笔记二十七--设置底部菜单TabBar的样式
官方文档地址:uni.setTabBarItem(OBJECT) | uni-app官网 uni.setTabBarItem(OBJECT) 动态设置 tabBar 某一项的内容,通常写在项目的App.vue的onLaunch方法中,用于项目启动时立即执行 重要参数: indexnumber是tabBar 的哪一项&…...
