当前位置: 首页 > news >正文

Android Studio(数据存储)

数据存储方式

方式特点
文件存储openFileInput()和openFileOutput()进行存写
SharedPreferences以XML格式进行存储
SQLite运算快、占用资源少、支持基本的sql语法
ContentProvider可用于应用之间的数据交互
网络存储通过网络提供的存储空间来存储/获取数据信息

文件存储

主要语法
FileOutputStream fos = openFileOutput(String filename,int mode);
FileInputStream fis = openFileInput(String filename);
modedesc
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和网络存储这两种存储方式只有结合具体的需求项目才能更好地学习,这里就不介绍了,需要学习的可以自己搜索相关文章具体学习。

http://www.lryc.cn/news/220276.html

相关文章:

  • 人,要懂得享受孤独
  • Spring Boot + EasyUI Datebox和Datetimebox样例
  • web前端JS基础------制作一个获取验证码
  • MyBatis面经
  • SpringBoot基础(六)-- 辅助功能之一 -- 内嵌tomcat
  • K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示管理
  • 「直播回放」使用 PLC + OPC + TDengine,快速搭建烟草生产监测系统
  • 私域流量搭建与运营,技巧全攻略!
  • AWS SAP-C02教程0--课程概述
  • RFC使用与WebService
  • 打造全球化电商平台,多语言商城系统助您开拓海外市场
  • 【滑动窗口】篮里到底能装 “几个水果” 呢?
  • newstarctf2022week2
  • 集群调度-01
  • 【软件工程】金管局计算机岗位——软件测试的分类(⭐⭐⭐⭐)
  • Halcon WPF 开发学习笔记(1):Hello World小程序
  • pix2tex - LaTeX OCR 安装使用记录
  • 前端框架Vue学习 ——(四)Axios
  • 将json数据导入到ES集群——解决方案对比填坑日记
  • C语言----------#pragma预处理分析
  • 数据库中的时间django转换成None
  • 八种流行的网络协议
  • Qwt QwtKnob绘制旋钮
  • docker部署elk
  • 护网蓝队初级面试题摘录(下)
  • 通过51单片机控制SG90舵机按角度正反转转动
  • uniapp写一个计算器用于记账(微信小程序,APP)
  • 前端的几种网络请求方式
  • Kubernetes技术与架构-存储 4
  • jbase编译与部署的优化