项目踩坑Android知识Android技术知识

Android数据存储

2017-03-29  本文已影响71人  程序员丶星霖

Android数据存储

所有应用程序都会涉及数据的输入、输出,应用程序的参数设置、程序运行状态数据都需要保存到外部存储器上。

SharedPreferences

应用程序有少量的数据需要保存,而且这些数据的格式很简单,都是普通的字符串、标量类型的值等,可以使用SharedPreferences进行保存。

SharedPreferences与Editor

SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。
SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法来访问SharedPreferences中的key-value对:

SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据:

Context提供的getSharedPreferences(String name , int mode)方法来获取SharedPreferences实例,这个方法的第二个参数支持如下几个值:

SharedPreferences数据总是保存在/data/data/<package name>/shared_prefs目录下,以XML格式保存。

File存储

openFileOutput和openFileInput

Context提供了下面两个方法来打开应用程序的数据文件夹里的文件IO流:

mode指定打开文件的模式,支持如下所示的值:

Context还提供了下面几个方法可以访问应用程序的数据文件夹:

读写SD卡上的文件

为了更好地存取应用程序中的大文件数据,应用程序需要读写SD卡上的文件。其步骤如下:

  1. 调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限。代码如下:
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
  1. 调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录。
  2. 使用FileInputStream、FileOutputStream、FileReader或FileWriter读写SD卡里的文件。

应用程序读写SD卡上的文件有如下两个注意点:

<!--在SD卡中创建与删除文件权限-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!--向SD卡写入数据权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

SQLite数据库

Android系统集成了一个轻量级的数据库:SQLite。它只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存取。

SQLiteDatabase简介

Android提供了SQLiteDatabase代表一个数据库,一旦应用程序获得了其对象,就可以通过它来管理、操作数据库了。
SQLiteDatabase提供了如下方法打开一个文件对应的数据库:

获取到SQLiteDatabase对象之后,就可调用SQLiteDatabase的如下方法操作数据库了:

Cursor也提供了如下方法来移动查询结果的记录指针:

一旦将记录指针移动到指定行之后,就可以调用Cursor的getXxx()方法获取这一行的指定列的数据了。

创建数据库和表

如下代码表示在程序中创建数据表:

sql = "create  table  user_inf(user_id  integer  primary  key , "+"user_name  varchar(255),"+"user_pass  varchar(255))"
db.execSQL(sql);

用SQLiteDatabase进行数据库操作的步骤如下:

  1. 获取SQLiteDatabase对象,它代表了与数据库的连接。
  2. 调用SQLiteDatabase的方法来执行SQL语句。
  3. 操作SQL语句的执行结果。
  4. 关闭SQLiteDatabase,回收资源。

使用特定方法操作SQLite数据库

1.使用insert方法插入记录
long insert(String table , String nullColumnHack , ContentValues values),这是插入方法,参数说明如下:

insert方法插入的一行记录使用ContentValues存放,ContentValues类似于Map,它提供了put(String key , Xxx value)方法用于存入数据,getAsXxx(String key)方法用于取出数据。

2.使用update方法更新记录
update(String table,ContentValues values,String whereClause,String[] whereArgs),参数说明如下:

3.使用delete方法删除记录
delete(String table,String whereClause,String[] whereArgs),参数说明如下:

4.使用query方法查询记录
Cursor query(boolean distinct , String table , String[] columns , String whereClause , String[] whereArgs , String groupBy , String having , String orderBy , String limit),参数说明如下:

事务

SQLiteDatabase中包含如下两个方法来控制事务:

当程序执行endTransaction()方法时将会结束事务(到底是提交事务,还是回滚事务),取决于SQLiteDatabase是否调用了setTransactionSuccessful()方法来设置事务标识,如果调用该方法设置了事务成功则提交事务,否则将会回滚事务。

SQLiteOpenHelper类

在实际项目中很少使用SQLiteDatabase的方法来打开数据库,通常都会继承SQLiteOpenHelper开发子类,并通过该子类的getReadableDatabase()、getWriteDatabase()方法打开数据库。
SQLiteOpenHelper包含如下常用方法:

好的,就到这!

我的微信公众号.jpg
上一篇下一篇

猜你喜欢

热点阅读