持久技术即数据数据存储问题,Android有多种成熟的存储方式,例如SharedPreferences,SQLite等
SharedPreferences()方法
Android中主要有三种方法得到SharedPreferences对象
1.Context类中getSharedPreferences()方法
this.getSharedPreferences("sharedPreferences对象名",MODE_PRIVATE);//第一个参数 sharedP的名字 ,第二个是操作模式,目前只有MODE_PRIVATE可用。
2.Acitivity类中的getPreferences()方法
this.getPreferences(MODE_PRIVATE);//会自动当前活动的雷鸣作为SharedPreferences()的文件名
3.PreferenceManager类中的getDefaultSharedPreferences
PreferenceManager.getDefaultSharedPreferences();//静态方法
获得Editor对象
保存数据
SharedPreferences.Editor editor = getSharedPreferences("test",MODE_PRIVATE).edit();
editor.putString("key","value");
editor.apply();
读取数据
SharedPreferences sharedPreferences = this.getSharedPreferences("aa",MODE_PRIVATE);
String data = sharedPreferences.getString("key","null");//第一个是key,第二个参数是如果没有那个键对值,就用第二个参数替换。
SQLite数据库存储
1.创建数据库
Android通过SQLiteOpneHelper帮助类来处理数据库
public class MySqlite extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement)";//sql语言
private Context mContext ;
public MySqlite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context
}//第一个参数context,第二个参数数据库名,第三个参数自定义cursor指针(一般传入null),第四个数据库版本号
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);//execSQL(sql语句)
}//重写
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Book");
onCreate(db);
}//重写
}
2.Activity中的操作
public class SqlActivity extends Activity {
private MySqlite mySqlite;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySqlite = new MySqlite(this,"Book.db",null,1);
mySqlite.getWritableDatabase();//创建或打开一个数据库,当不可写入时,异常
mySqlite.getReadableDatabase();//创建或打开一个数据库,当不可写入时,将以只读的方式打开数据库
}
}
3.数据操作
SQLiteDataBase通过 contentValues对象来传递数据
注入方法 为 Insert
SQLiteDatabase sqLiteDatabase = mySqlite.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("key","value");
sqLiteDatabase.insert("表名",null,values);//第二个参数 如果元素为空,则注入null
更新方法
db.update("表名",contentValues,"约束","约束")第三,第四参数用约束更新某一行或几行,若不用,则表示更新所有行。
删除
db.delete("表名","约束","约束");
查询
不必每个参数都设置。