数据存储:

五种:

Shared Preferences 参数共享

Internal Storage 内部存储

External Storage 外部存储(sdcard)

SQLite Databases 数据库存储

Network Connection 网络存储

1、Shared Preferences 参数共享

应用场景:应用程序有少量数据需要保存的话(保存应用程序设置的一些参数)

文件保存位置:/data/data/包名/shared_prefs/xxx.xml

保存数据:

SharedPreferences sp = getPreferences(MODE_PRIVATE);//参数是操作模式,MODE_PRIVATE是私有的

Editor edit = sp.edit(); //得到一个编辑器

edit.putString("str", "jhgasdhasd");

edit.putBoolean("boolean", false);

edit.putInt("int", 1);

edit.commit(); //提交修改

数据读取:

SharedPreferences sp = getPreferences(MODE_PRIVATE);

String string = sp.getString("str", null);

boolean boolean1 = sp.getBoolean("boolean", false);

int int1 = sp.getInt("int", 0);

它的操作模式一般都是MODE_PRIVATE(只能应用本身才能读取修改这个文件)

//自定义要保存数据的文件名

SharedPreferences sp = getSharedPreferences("yinan", MODE_PRIVATE);

2、Internal Storage 内部存储

文件保存位置:/data/data/包名/files/xxx.xxx

文件格式:自定义

保存数据:

FileOutputStream fos = null;

try {

fos = openFileOutput("yinan.txt", MODE_PRIVATE);

String str = "sdfsfgsdfgsd";

fos.write(str.getBytes());

} catch (FileNotFoundException e) {

数据读取:

FileInputStream fis = null;

try {

fis = openFileInput("yinan.txt");

ByteArrayBuffer arrayBuffer = new ByteArrayBuffer(4000);

int len = 0;

byte[] buffer = new byte[1024];

while ((len = fis.read(buffer)) != -1) {

arrayBuffer.append(buffer, 0, len);

}

操作(读写模式)模式

MODE_PRIVATE 当前应用才有权限读写。数据会覆盖的。

MODE_APPEND 当前应用才有权限读写。这个数据可以追加。

MODE_WORLD_READABLE 其他应用可读。

MODE_WORLD_WRITEABLE 其他应用可写。

3、External Storage 外部存储(sdcard)

路径:

2.1之前:/sdcard

2.2之后:/mnt/sdcard

//获取sdcard的路径

File file = Environment.getExternalStorageDirectory();

//判断sdcard状态

if(Environment.MEDIA_MOUNTED.

equals(Environment.getExternalStorageState()))

{

//获取sdcard的可用空间

long freeSpace = file.getFreeSpace();

}

else

{

}

4、 SQLite Databases 数据库存储

android平台上,集成了一个嵌入式关系型数据库--SQLite

免费的

轻量级

多线程

跨平台

SQLite 可以解析大部分标准的SQL语句。

创建表:

CREATE TABLE 表名 (id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(20))

例如:CREATE TABLE student (studentid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(50),phone VARCHAR(20))

删除表:

DROP TABLE 表名

例如:DROP TABLE student

更新表:

ALTER TABLE 表名 ADD 字段名 属性

例如:ALTER TABLE student ADD COLUMN age INTEGER

查询语句:

select * from 表名 where 条件语句 group by 分组语句 having 分组条件 order by 排序语句

例如:SELECT phone, name FROM student ORDER BY name DESC

插入语句:

insert into 表名(字段名) values (值)

例如:INSERT INTO student (name, phone) VALUES('test', '13666666666')

更新语句:

update 表名 set 字段名 = 值 where 条件语句

例如:UPDATE student SET phone=1399999999 WHERE name='test'

删除语句:

delete from 表名 where 条件语句

例如:DELETE FROM student WHERE name='test'

Android里面操作SQLite的步骤:

1、创建一个类,去继承SQLiteOpenHelper

2、实现两个方法。新增一个有参的构造方法

public MySQLiteOpenHelper(Context context, int version) {

super(context, "yinan.db", null, version);

}

//参数个数是自定义的。只要在super()里面有传数据就不需要外部再传

//当数据库不存在的时候,调用这个辅助类的时候会自动创建,并调用onCreate();

//如果数据存在onCreate方法就不会被调用。

//如果数据存在,但是版本号不一样的话onUpgrade()就会被调用。

3、自动创建表:

根据onCreate方法的特性,

当数据库不存在的时候,创建数据库的同时把表一起创建。

public void onCreate(SQLiteDatabase db) {

String sql = "CREATE TABLE student (studentid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(50),phone VARCHAR(20))";

db.execSQL(sql );

}

4、在Activity中创建这个辅助类的对象。

对象.getWritableDatabase();

对象.getReadableDatabase();

这个两个方法任意一个就可以得到数据库对象。

数据库对象.execSQL(sql语句)

查询:

private void select() {

arrayList.clear();

String sql = "SELECT phone, name FROM student ORDER BY name DESC";

Cursor cursor = mDB.rawQuery(sql, null);

boolean haseData = cursor.moveToFirst();

while(haseData)//如果有数据就继续循环

{

//获取每次读取游标里面的数据

String name = cursor.getString(cursor.getColumnIndex("name"));

String phone = cursor.getString(cursor.getColumnIndex("phone"));

//把数据封装起来

Student student = new Student(name, phone);

arrayList.add(student);

//让游标读取下一个数

haseData = cursor.moveToNext();

}

mTextView.setText(arrayList.toString());

}

android 五种存储方式,android数据五种存储相关推荐

  1. android常用的存储方式,Android 常见数据存储方式

    Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串.布尔值.基础数据.集合等数据.常用于存储较简单的参数设置. 2 ...

  2. 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?

    循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的.不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 ...

  3. Spring 的三种注入方式,到底哪种注入方式最佳?

    1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...

  4. android的数据存储方式有哪几种方式,Android存储数据的5种方式

    第一种:SharedPreferences 1.使用键值对的方式存储数据 2.通常用于:保存用户的偏好设置.选择是否保存密码.记录文档阅读的位置等 3.实现方式(写入): a).获取SharedPre ...

  5. android的数据存储方式有哪几种方式,android存储数据的几种方式比较

    机身内存读取主要用个两个类文件输入流(FileInputStream)和文件输出流(FileOutputStream):FileInputStream fileInput = this.openFil ...

  6. android画面数据存储方式,Android的三种储存方式

    SharePreferences SharePreferences适合用来保存相对较小的键值集合,比如应用程序的配置文件,它本质是存放在/data/data/[包名]/shared_prefs文件夹下 ...

  7. mysql数据存储方式_数据存储在mysql的两种方式

    数据存储在mysql的两种方式 发布时间:2020-05-12 16:16:25 来源:亿速云 阅读:250 作者:三月 下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际 ...

  8. android的xml解析方式,Android中对xml文件解析的3种方式总结

    前言 xml 是数据传输的一种格式,Android 中的布局文件.设置文件等都采用它来表示.Android 中对 xml 文件的解析也有多种方式,下面介绍常用的 3 种方式: Dom . SAX 和 ...

  9. android qq存储方式,android(5)(模拟QQ登录,文件存储,SD卡存储,SharedPreferences存储)...

    模拟QQ登录(记录账号和密码): 1.文件存储到文件中: /** * 文件存储 *@author Administrator * */ public class Utils { /** * 保存用户信 ...

  10. c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍

    描述 C语言中的变量根据其生存周期,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期间分配固定的存储空间的方式.静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量. 动 ...

最新文章

  1. 【调试工具】tcpdump
  2. 怎么在苹果Mac虚拟机上安装Win7
  3. 深入浅出根据函数调用过程谈栈回溯原理
  4. 【Android】Uri和Url和URN
  5. matlab字符和字符串,MATLAB字符和字符串
  6. Linux学习总结(十六)系统用户及用户组管理
  7. 浅析Unity 坐标系
  8. java断言assertequals_如何实现Java测试的自定义断言
  9. 谷歌排名第一的编程语言,死磕这点应用,小白也能转型!
  10. python入门经典100例-【python】编程语言入门经典100例--22
  11. 登录个税显示局端服务器显示,天津金税三期个人所得税扣缴系统
  12. HTML5植物大战僵尸网页版游戏源码
  13. 超级外链工具-自动添加外链都有哪些
  14. 中兴云桌面服务器,中兴云桌面解决方案.pdf
  15. # 书籍《银河帝国10—裸阳》读后感—20210606
  16. systemd 介绍
  17. 记一次replace into引发的死锁问题
  18. Kubernetes之PV与PVC
  19. Pycharmpython安装教程
  20. 为什么说创意是一部宣传片的灵魂

热门文章

  1. iOS使用ShareSdk进行第三方微信登录
  2. 富爸爸穷爸爸(读后感悟,书中重点)
  3. 富爸爸穷爸爸-罗伯特.清崎 pdf下载与思维导图
  4. 2019暑假牛客训练赛(补题及笔记)
  5. 幻梦一场:Vulcan Project
  6. 二、Win10如何解决svchost一直占用网速和内存?
  7. android 来电默认铃声,android – 来电动态覆盖默认铃声
  8. 彩色二维码如何制作?
  9. c语言里的函数和数学里面的函数有什么区别,计算机函数和数学函数有哪些区别和关系?...
  10. educoder:实验二 数字类型及其操作(新)