Android中常用的数据存储方式简单的大致有三种:①文件存储SharedPreferences存储数据库存储


一、Sharedpreferences

        存

SharedPreferences是通过xml文件来做数据存储

使用SharedPreferences存储数据的步骤:

1.通过context对象创建一个SharedPreferences对象

2.通过SharedPreferences对象获取一个Editor对象

3.使用Editor对象添加数据

4.提交Editor对象(重要)

        SharedPreferences config = getSharedPreferences("config", 0);        SharedPreferences.Editor edit = config.edit();        edit.putString("username","小Z");        edit.putString("password","android studio");        edit.commit();

通过DDMS可以查看文件  /data/data/packname底下


导出到电脑中就可以查看


getSharedPreferences(String name,int mode)有两个参数,第一个毋庸置疑是文件的名字,第二个mode有三种取值:MODE_PRIVATE(0)、MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE(已经不推荐使用,权限不安全),所以一般直接用0

取数据方式和存数据差不多:①通过Context对象创建一个SharedPreferences对象

    ②通过SharePreferences对象取数据

        SharedPreferences config = getSharedPreferences("config", 0);  //注意这里的文件名要和创建时的一样才行,否则就是新建了        String username = config.getString("username", "");  //这里第二个参数是default_values,这里直接设为了""空串        String password = config.getString("password", "");        Toast.makeText(getApplicationContext(),"username:"+username+" password:"+ password,Toast.LENGTH_SHORT).show();


上面文件名是我们自己指定的,我们还可以通过PreferenceManager来获取一个默认的SharedPreferences对象

SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);


二、数据库存储

SharedPreferences和文件都只适合用来存储少量数据,如果要存储大量结构相同的数据就要用到数据库才行。Android中使用的是嵌入式数据库sqlite,轻量级。与数据库相关的类是 SqliteOpenHelper
创建数据库的步骤:①创建一个类继承SqliteOpenHelper,需要添加一个构造方法,同时实现两个方法onCreate和onUpgrade
public class MySqlite extends SQLiteOpenHelper {    public MySqlite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);  //factory直接填null就可以    }    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {//当数据库第一次创建的时候才会被调用:特别适合做数据库的初始化工作,如表结构的创建...    }    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {//当数据库版本号(构造函数中的version)发生改变是才会执行:特别适合做表结构的修改    }}

②创建一个类的对象,调用getReadableDatabase()或getWriteableDatabase()方法,创建或打开数据库,不存在就创建,存在就打开   区别:
getReadableDatabase:
先尝试以读写方式打开数据库,如果磁盘空间满了,他会重新尝试以只读方式打开数据库。
getWritableDatabase:
直接以读写方式打开数据库,如果磁盘空间满了,就直接报错。

这样数据库就创建好了.接下来就是增删改查了
getReadableDatabase()和getWriteableDatabase()都返回一个SqliteDatabase对象,通过这个对象我们就可以实现对数据库的操作 1.exeSQL(...)方法,没有返回值,可以用来作增删改 2.rawQuery(...)方法,返回一个Cursor游标,可以用来作查 上面这两种方法需要我们自己编写响应的sql语句 3.通过insert,update,delete,query方法,我们只需要填写响应的参数就行,有返回值
总结:实际使用时,我们通过insert,update,delete方法实现增删改,通过rawQuery方法实现查询,因为query不支持多表查询,而且参数十分复杂

事务:小Z的简单理解就是使若干条sql语句要么都执行成功,要么不执行,避免由于突发事件导致的只执行了一半语句导致的数据库数据错误问题 事务的使用十分简单:
   db.beginTransaction();   try {     ...     db.setTransactionSuccessful();   } finally {     db.endTransaction();   } 


三、文件存储

通过Content的openFileInput和openFileOutput创建文件的输入输出流,小Z暂时用的比较少

更多相关文章

  1. android跳转到手机系统默认应用市场的方法
  2. Android(安卓)浅析View的事件分发机制
  3. Appium Android(安卓)元素定位方法 原生+H5
  4. Android(安卓)aidl接口远程调用
  5. Android(安卓)Handler
  6. Android的onCreateOptionsMenu()创建菜单Menu详解
  7. 浅谈Java中Collections.sort对List排序的两种方法
  8. 类和 Json对象
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)根据城市获取经纬度 适配An
  2. Android自适应不同屏幕几种方法
  3. 关于Android的nodpi,xhdpi,hdpi,mdpi,ldp
  4. 認識Android的BinderProxy和Binder類別
  5. Android:异步调用详解
  6. android EditText不自动弹出软键盘
  7. Android(安卓)事件分发机制
  8. Android(安卓)应用安全风险与防范
  9. Android与H5交互,以及WebView加载进度条
  10. Android(安卓)AIDL(Android(安卓)Interfa