`
2277259257
  • 浏览: 498437 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android----数据存储与读取

 
阅读更多

Android有四种数据存储与读取:Preferences/Files/Databases/Network/ContentProvider

1、Preferences----是一个轻量级的存储数据方法

在A中保存数据:
SharedPreferences.Editor  sharedata = getSharedPreferences("data" , 0).edit();
sharedata.putString("name" , "shenrenkui");
sharedata.commit();

在B中取数据:
SharedPreferences  sharedata = getSharePreferences("data" , 0);
String  data = sharedata.getString("name" , null);
Log.i(TAG , "data="+data);

 注意:Context.getSharedPreferences(String  name , int type)的参数和我们在创建数据权限属性是一样的,存储和取值的过程有点像HashMap但是比HashMap更具人性化,getXXX(Object  key ,Object  defultReturnValue),第二个参数是当你所要的key对应没有时候返回的值,这就省去了很多逻辑判断。。。

 

2、Files

file = new File(FILE_PATH , FILE_NAME);
file.createNewFile();

//打开文件file的OutputStream
out = new FileOutputStream(file);
String  infoToWrite = "纸上得来终觉浅,绝知此事要躬行";

//将字符串转换成byte数组写入文件
out.write(infoToWrite.getBytes());

//关闭文件file的OutputStream
out.close();

//打开文件file的InPutStream
in = new FileInputStream(file);

//将文件内容全部读入到byte数组
int  length = (int)file.length();
btye[] temp = new byte[length];
in.read(temp , 0 ,length);

//将byte数组用UTF-8编码并存入display字符串中
display = EncodingUtils.getString(temp , TEXT_ENCODING);

//关闭文件file的InpytStream
in.close();
}catch(IOException  e) {
       //将出错信息打印到Logcat
       Log.e(TAG , e.toString());
       this.finish();
}

//从资源读取
InputStream  is = getResources().getRawResource(R.raw.文件名)

 3、Databases
Android内嵌了功能比其他手机操作系统强大的关系型数据库SqlSite,我们自己创建的数据可以用adb shell来操作
具体路径是/data/data/package_name/databases
一、SQLite数据库支持null,Integer,real,text,blod(二进制数据)五种数据类型。但有一种情况例外:定义为Integer  primary key的字段只能存储64位整数,当向这种字段保存除整数以外的数据时,将会产生错误,另外,SQLite在解析Create Table语句时,会忽略create table语句中跟在字段后面的数据类型信息
二、在程序初始化时候,必须先建立数据库以对数据库进行更新,所以这里需要继承一个SQLiteOpenHelper抽象类,这里有两个方法onCreate(),onUpgreade()两个方法,前者用来创建数据库及对数据库的一些初始化操作,后者是当数据库版本进行更新时候用。
例子:创建一个数据库名nyist,版本为1的数据库,并在数据库中创建一个person表,这里利用了构造函数传入了数据库名和版本常量,参数为Context。

public  class  DatebaseHelper  extends  SQLiteHelper{
         public  final  static  String  NAME="nyist";
         public  final  static  int  	VERSION=1;
         public  DatebaseHelper(Context  context){
	super(context ,NAME, null ,VERSION);
         }
         public  void  onCreate(SQLiteDatabase  db){
	db.execSQL("CREATE  TABLE  person (personid  integer  primary  key  autoincrement, name  varchar(20) ,age  integer)");
         }
         public  void  onUpgrade(SQLiteDatabase  db , int  oldVersion ,int  newVersion){
	db.execSQL("DROP  TABLE  IF  EXISTS  person");
	onCreate(db);
          }
}

 

 

 

//定义数据库
SQLiteDatabase  myDB = null;
//打开或建立数据库(当数据库不存在时,自动创建)
myDB = this.openOrCreateDatabase("MY_DATABASE_NAME", "MODE_PRIVATE", null);
//删除表 、新建表、插入数据、更新数据
myDB.execSQL("...标准的SQL语句...;");

//查询比较麻烦
Crusor  c = myDB.rawQuery("SELECT  id ,name , tel  FROM  MY_DATABASE_TABLE  WHERE age >1 order by age;" , null);
if(c != null){
   if(c.moveToFirst()){
         do{
	Log.w("test" , "id="+c.getString(c.getColumnIndex("id")));
	Log.w("test" , "name="+c.getString(c.getColumnIndex("name")));
	Log.w("test" , "tel="+c.getString(c.getColumnIndex("tel")));
         }while(c.moveToNext());
   }
}
c.close();
//关闭数据库
myDB.close();

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics