第4章 Android中的数据存取
程序是数据的输入、处理、输出的过程,不管是操作系统还是应用程序,都不可避免要用到大量的数据。由于内存容量有限,且一旦关机,内存中的信息都消失,因此,一般把需要下次使用的数据保存在磁盘(对于手机来说SD卡)中。操作系统一般以文件的形式来保存数据,而应用程序更喜欢使用数据库来保存。
在手机中,也有许多需要保存的数据,如音频文件、视频、图片、通讯录、短信、游戏中的设置等数据。Android作为一种手机上的操作系统,提供了以下几种数据存取方式:Preference(配置)、File(文件)、SQLite(数据库)、网络等。
另外,在Android中,各个应用程序组件之间是相互独立的,彼此的数据一般不能共享,为了实现数据的共享,Android提供Content Provider组件来实现应用程序之间的数据共享(最典型的共享就如通讯录)。
4.1 Preference
Preference提供了一种轻量级的数据存取方法,应用场合主要是数据比较少的配置信息。它
以“键-值”(是一个Map)对的方式将数据保存在一个XML配置文件中。
4.1.1 Preference简介
使用Preference方式来存取数据,要用到SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在t包中。
调用SharedPreferences( String name, int mode)方法可得到SharedPreferences接口,该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:MODE_PRIVATE(私有)、MODE_WORLD_READABLE(可读)和MODE_WORLD_WRITEABLE(可写)。
SharedPreferences提供了获得数据的方法,如:getString、getInt等。调用其edit方法返回SharedPreferences.Editor内部接口,该接口提供了保存数据的方法,如putString、putInt等,调用该接口的commit方法,可以将数据进行保存。
SharedPreferences的常用方法:
方法名称 | 方法描述 |
edit( ) | 返回SharedPreferences.Editor内部接口 |
contains( String key ) | 判断是否包含该键值 |
getAll( ) | 返回所有配置信息Map |
getBoolean(String key,boolean defValue) | 获得一个boolean值 |
getFloat(String key, float defValue) | 获得一个float值 |
getInt(String key, int defValue) | 获得一个int值 |
getLong(String key, long defValue) | 获得一个long值 |
getString(String key,String defValue) | 获得一个String值 |
SharedPreferences.Editor的常用方法:
方法名称 | 方法描述 |
clear() | 清除所有值 |
commit( ) | 真正保存 |
getAll( ) | 返回掺配置信息Map |
putBoolean(String key,boolean value) | 保存一个boolean值 |
putFloat(String key,float value) | 保存一个float值 |
putInt(String key,int value) | 保存一个int值 |
putLong(String key,long value) | 保存一个long值 |
putString(String key,String value) | 保存一个String值 |
remove(String key) | 删除该键对应的值 |
4.1.2 Preference应用实例——保存临时短信
当我们正在编辑短信时,突然来电话了,这时我们离开编辑短信,去接电话。打完电话回来,我们发现刚才输入的短信还在——这就是临时短信,我们可以通过Preference来保存临时短信内容。
其工作原理为:在我们的Activity类的onCreate()方法中通过getSharedPreferences()方法获得SharedPreferences接口,调用该接口的getString( )方法,获得保存内容,将内容设置到我们编辑框中。在Activity类的onStop( )方法中保存内容:使用getSharedPreferences().edit( )方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString( )方法保存短信内容,并调用commit( )方法提交内容。
编程如下:
package com.asc.delpy;
import android.app.Activity;
t.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class Sample_4_1Act extends Activity {
private static final String TEMP_SMS="temp_sms"; //l就是保存的XML文件名称
EditText et1;
Button btn1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Create(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)this.findViewById(1);
SharedPreferences pre=getSharedPreferences(TEMP_SMS, MODE_WORLD_READABLE);//获得SharedPreferences
String String("sms_content", ""); //从SharedPreferences中获得名称为sms_content的字符串内容
et1.setText(content); //将内容显示出来
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
Stop(); //注意:这是先调用父类的onStop方法,绝对不能删除,否则出错
SharedPreferences.Editor editor=getSharedPreferences(TEMP_SMS,MODE_WORLD_WRITEABLE).edit();
String str="";
Text().toString(); //先从编辑框中读取用户输入的文字
editor.putString("sms_content", str); //该文字以sms_content名称保存在XML文件中
editormit(); //提交保存
}
}
其实,就是将要保存的内容作为XML文件保存到了/data/data/包名/shared_prefs下面,文件名为:l(可用DDMS工具中的File Explorer打开看得到这个文件)。
4.2 File
我们可以将一些数据直接以文件的形式保存在设备中,如一些文本文件、PDF文件、音频、视频和图片等。Android提供了文件的读写方法。
通过Context.openFileInput( )方法获得标准Java文件输入流(FileInputStream),通过Context.openFileOutput( )方法获得文件输出流(FileOutputStream)。使用Resources.openRawResource( DataFile)方法返回InputStream。
例Sample_4_2用来演示File读写私有文件(就是该文件存在在于该包中,别的应用程序无法访问)
如果要读取外部的文件,方法完全不同,例Sample_4_3用来读取外部文件:Resource\ra
w目录和Assets目录中的文件。需要注意的是,这两个目录下的文件是只读的,就是在Android下,只能读,不能修改。
4.3 SQLite
在手机上来说,由于其资源的限制(CPU慢、内存小、存储容量小等),无法使用大型数据库。这不同于在电脑上,在电脑上一般可以另外配置一个服务器专门作为数据库服务器。因此,在手机上的数据库必须要非常精练,功能可能也很有限。
SQLite是一个嵌入式数据库引擎,它是针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎。
SQLite数据库不像其他的数据库(如Oracle、SQL Server),它没有服务器进程,所有的内容包含在同一个单文件中。该文件是跨平台的,可以自由复制。
4.3.1 SQLiteDatabase
Android提供了创建和使用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提
供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类提供了更简洁的功能。在Android的SDK目录下有sqlite3工具,我们可以利用它来创建数据库、创建表、执行一些常用的SQL语句。其常用的方法:
方法名称 | 方法描述 |
openOrCreateDatabase(...) | 打开或创建数据库,如果要打开的数据库名存在,就单纯打开,如果不存在,就创建之 |
insert(...) resultset 遍历 | 添加一条记录 |
delete(...) | 删除一条记录 |
query(...) | 查询记录(相当于SELECT) |
update(...) | 修改记录 |
execSQL(...) | 执行一条SQL语句 |
close(...) | 关闭数据库 |
1、打开或创建数据库
可以使用openOrCreateDatabase方法来打开或创建一个数据库,其方法声明为:
public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论