1.获取SharedPreferences对象中的数据
SharedPreferences对象中提供了一些列的get方法。这些get方法接收两个参数,第一个参数是键,第二个参数是默认值。
2.SQLite数据库存储
1. 首先借助SQLiteOpenHelper类对数据库进行创建和升级:
SQLiteOpenHelper是抽象类需要自己创建一个类去继承它。同时需要重写两个抽象方法onCreate()和onUpgrade(),分别在这两个方法中实现创建、升级数据库。
SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库,并返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候,read方法将返回一个只读对象,writ方法则抛出异常。
SQLiteOpenHelper中的构造函数接收4个参数,第一个参数是Context,第二个是数据库名称,第三个是Cursor对象(传入null以使用默认的),第四个是当前数据库的版本号,可用于对数据库进行升级。
构建出SQLiteOpenHelper的实例之后,再调用它的getReadableDatabase()或getWritableDatabase()方法就能够创建数据库了。
数据库文件会存放在/data/data/<package name>/databases/目录下。
例子:创建一个名为BookStore.db的数据库,然后在这个数据库中新建一张Book表。代码如下:
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "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);
Log.d("TAG", "Create succeed !");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class DatabaseActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_layout);
//已经存在的数据库,不会重新建立
dbHelper = new MyDatabaseHelper(this, "BookStore.db"
, null, 1);
db = dbHelper.getWritableDatabase();
}
}