Android的数据存储(数据持久化)总共有五种。分别为:
Shared Preferences 参数共享
Internal Storage 内部存储
External Storage 外部存储
SQLite Databases 数据库存储
Network Connection 网络存储
1、Shared Preferences 参数共享
应用场景:应用程序有少量的数据需要保存(设置参数的保存)
文件保存位置:/data/data/包名/shared_prefs/xxx.xml
文件格式:xml
保存数据:
SharedPreferences sp = getSharedPreferences("xinbo", 0);
Editor edit = sp.edit();
edit.putBoolean("isLogin", true);
edit.putString("name", "小丽");
edit.commit();
读取数据:
SharedPreferences sp = getSharedPreferences("xinbo", 0);
boolean boolean1 = sp.getBoolean("isLogin", false);
String string = sp.getString("name", "小花");
mTextView.setText(""+boolean1+string);
2、Internal Storage 内部存储
文件保存位置:/data/data/包名/files/xxx.xxx
文件格式:自定义
保存数据:
fos = openFileOutput("hehe.json", MODE_WORLD_READABLE);
String str = "你好";
fos.write(str.getBytes());
读取数据:
ByteArrayBuffer arrayBuffer = new ByteArrayBuffer(2000);
fis = openFileInput("hehe.json");
byte[] buffer = new byte[1024];
int len;
while(-1!=(len=fis.read(buffer ))){
arrayBuffer.append(buffer, 0, len);
}
String string = new String(arrayBuffer.toByteArray(), 0, arrayBuffer.length());
mTextView.setText(string);
MODE_WORLD_READABLE读写模式:
MODE_PRIVATE 私有的,只有当前应用才能去对这个文件
进行读写操作,不会进行追加
MODE_APPEND 只有当前应用才能去对这个文件
进行读写操作,数据会追加
MODE_WORLD_READABLE 其他应用可读
MODE_WORLD_WRITEABLE 其他应用可写
Sqlite DataBase 数据库存储
场景:大量结构相似的数据,频繁的增删改查的时候,用到数据库
通过数据库对象执行sql语句去实现
添加数据:
private void add_Data() {
String str = "INSERT INTO student (name,phone) VALUES ('小丽','657465464')";
mDB.execSQL(str);
}
删除数据:
private void del_Data() {
String str = "DELETE FROM student WHERE name = '小丽'";
mDB.execSQL(str);
}
修改数据:
private void update_Data() {
String str = "UPDATE student SET phone = '110' WHERE name = '小丽'";
mDB.execSQL(str);
}
查询数据:
private void find_Data() {
dataList.clear();
String str = "SELECT name,phone FROM student";
Cursor cursor = mDB.rawQuery(str, null);
// 将游标移到第一个位置
boolean toFirst = cursor.moveToFirst();
while (toFirst) {
// 。。。。。。
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
MyData myData = new MyData(name, phone);
dataList.add(myData);
// 把游标移动到下一个位置
toFirst = cursor.moveToNext();
}
mTextView.setText(dataList.toString());
}