Android:日常学习笔记(9)———探究持久化技术
引入持久化技术
什么是持久化技术
持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。
Android系统提供的三种持久化技术:
文件存储、SharedPreference(使用共享首选项)存储以及数据库存储。
文件存储
通用代码
public void save1(String text)
{
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data",MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(writer!=null)
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void read1()
{
FileInputStream in =null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder(); try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line =null;
while ((line=reader.readLine())!=null)
content.append(line);
Toast.makeText(StoreActivity.this,content,Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
SharedPreference存储
通用代码
public void save2()
{
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",20);
editor.apply();
} public void read2()
{
SharedPreferences sharedPreferences = getSharedPreferences("data",MODE_PRIVATE);
Log.d("StoreActivity",sharedPreferences.getString("name",""));
Log.d("StoreActivity",""+sharedPreferences.getInt("age",100)); }
SQLite数据库存储
创建数据库
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK="CREATE TABLE Book(\n" + //再创建时会用到的SQL语句
" id INTEGER PRIMARY KEY AUTOINCREMENT,\n" +
" author TEXT,\n" +
" price REAL,\n" +
" pages INTEGER,\n" +
" name TEXT)"; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} @Override
public void onCreate(SQLiteDatabase db) { //重写创建方法
db.execSQL(CREATE_BOOK); //执行创建数据库的语句
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //重写更新方法
db.execSQL("drop table if exists Book");
onCreate(db);
}
}
创建并打开或打开数据库:
说明:SQLiteHelper对于一个数据库来说只能调用一次onCreate方法,即再创建时调用一次。若它存在,则永远不会再调用了。
更新数据表:
1.重写更新方法:
2.传入更大的版本号,从而调用更新方法:
SQLite的增删改查操作
添加数据