android 五种存储方式,android数据五种存储
数据存储:
五种:
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数据五种存储相关推荐
- android常用的存储方式,Android 常见数据存储方式
Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串.布尔值.基础数据.集合等数据.常用于存储较简单的参数设置. 2 ...
- 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?
循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的.不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 ...
- Spring 的三种注入方式,到底哪种注入方式最佳?
1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...
- android的数据存储方式有哪几种方式,Android存储数据的5种方式
第一种:SharedPreferences 1.使用键值对的方式存储数据 2.通常用于:保存用户的偏好设置.选择是否保存密码.记录文档阅读的位置等 3.实现方式(写入): a).获取SharedPre ...
- android的数据存储方式有哪几种方式,android存储数据的几种方式比较
机身内存读取主要用个两个类文件输入流(FileInputStream)和文件输出流(FileOutputStream):FileInputStream fileInput = this.openFil ...
- android画面数据存储方式,Android的三种储存方式
SharePreferences SharePreferences适合用来保存相对较小的键值集合,比如应用程序的配置文件,它本质是存放在/data/data/[包名]/shared_prefs文件夹下 ...
- mysql数据存储方式_数据存储在mysql的两种方式
数据存储在mysql的两种方式 发布时间:2020-05-12 16:16:25 来源:亿速云 阅读:250 作者:三月 下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际 ...
- android的xml解析方式,Android中对xml文件解析的3种方式总结
前言 xml 是数据传输的一种格式,Android 中的布局文件.设置文件等都采用它来表示.Android 中对 xml 文件的解析也有多种方式,下面介绍常用的 3 种方式: Dom . SAX 和 ...
- android qq存储方式,android(5)(模拟QQ登录,文件存储,SD卡存储,SharedPreferences存储)...
模拟QQ登录(记录账号和密码): 1.文件存储到文件中: /** * 文件存储 *@author Administrator * */ public class Utils { /** * 保存用户信 ...
- c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍
描述 C语言中的变量根据其生存周期,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期间分配固定的存储空间的方式.静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量. 动 ...
最新文章
- 【调试工具】tcpdump
- 怎么在苹果Mac虚拟机上安装Win7
- 深入浅出根据函数调用过程谈栈回溯原理
- 【Android】Uri和Url和URN
- matlab字符和字符串,MATLAB字符和字符串
- Linux学习总结(十六)系统用户及用户组管理
- 浅析Unity 坐标系
- java断言assertequals_如何实现Java测试的自定义断言
- 谷歌排名第一的编程语言,死磕这点应用,小白也能转型!
- python入门经典100例-【python】编程语言入门经典100例--22
- 登录个税显示局端服务器显示,天津金税三期个人所得税扣缴系统
- HTML5植物大战僵尸网页版游戏源码
- 超级外链工具-自动添加外链都有哪些
- 中兴云桌面服务器,中兴云桌面解决方案.pdf
- # 书籍《银河帝国10—裸阳》读后感—20210606
- systemd 介绍
- 记一次replace into引发的死锁问题
- Kubernetes之PV与PVC
- Pycharmpython安装教程
- 为什么说创意是一部宣传片的灵魂