四种Android数据存储方式

2019-12-10 18:51:04于丽

2)、获取数据

  1. 同样根据Context对象获取SharedPreference对象;
  2. 直接使用SharedPreference的getXXX(key)方法获取数据。 

综合例子:  

 //从单例里面找,如果不存在则在SharedPreferences里面读取

 private String getCityName(){
  String cityName = City.getCity().getCityName();
  if(cityName==null ||cityName==""){
   Context ctx =MainActivity.this;
   SharedPreferences sp =ctx.getSharedPreferences("CITY", MODE_PRIVATE);
   City.getCity().setCityName(sp.getString("CityName", "广州"));
  }
  return City.getCity().getCityName();
 }

注意
getSharedPrerences(key, [模式])方法中,第一个参数其实对应到XML的文件名,相同key的数据会保存到同一个文件下。
使用SharedPreference的getXXX(key)方法获取数据的时候,如果key不存在的活,不会出现报错,会返回none。建议使用getXXX()的时候指定默认值。

SQLite
SQLite是一个轻量级关系型数据库,既然是关系型数据库,那操作起来其实跟mysql、sql server差不多的。
需要注意的一点是,SQLite只有NULL、INTEGER、REAL(浮点数)、TEXT(字符串)和BLOB(大数据)五种类型,不存在BOOLEAN和DATE类型。 

1)、创建数据库
通过openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)方法创建,如果库已创建,则打开数据库。

复制代码 SQLiteDatabase db =this.openOrCreateDatabase("test_db.db", Context.MODE_PRIVATE, null);
2)、创建表
SQLiteDatabase没有提供创建表的方法,所以要靠execSQL()方法来实现。看名字也知道execSQL()用于直接执行sql的。
复制代码 String sql="create table t_user (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL,password TEXT NOT NULL)";
db.execSQL(sql);  

 


使用SQLiteDatabase的insert(String table, String nullColumnHack, ContentValues values)方法插入数据。ContentValues 类,类似于java中的Map,以键值对的方式保存数据。