我们在认知与学习一件事物时通常会有这样的三个疑问:是什么?有啥用?如何用?我接下来对Android的数据相关的三个组件的讲解基本上围绕着三个疑问去展开。
是什么?
SQLite一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla,PHP, Python)都使用了SQLite.
有啥用?
SQLite基本上符合 SQL-92标准,和其他的主要 SQL数据库(如MYSQL,Oracle)没什么区别。它的优点就是高效,Android运行时环境包含了完整的 SQLite。数据库存储在data/<项目文件夹 >/databases/ 下。
如何用?
继承SQLiteOpenHelper类实现一个他的子类
并重写:
onCreate()
onUpgrade()
用SQLiteOpenHelper对象的调用 getWritableDatabase()或者 getReadableDatabase()其中一个方法将数据库建立获得SQLiteDatabase类对象
调用SQLiteDatabase对象的方法进行数据库的操作:
SQLiteDatabase类的操作上可进行SQL语句方法和Android推荐方法两类的区分
SQL语句方法
//这里面?表示占位符,所以需要传入所有占位符的值,传入值有这个方法的参数传递
Stringsql="insert into person(name,address,sex)values(?,?,?)";
//获取一个可以写入的数据库
database=helper.getWritableDatabase();
database.execSQL(sql,params);
推荐api方法(也是对SQL语句的一个封装)
database=helper.getWritableDatabase();
id=database.insert("person", null, values);
flag=(id!=-1?true:false);
具体的对数据库的增删改查,我们看一个小应用例子的演示:SQLiteDemo
总结一下,关键就是要明白SQLiteOpenHelper类和SQLiteDatabase类,我讲的也不够全面和详细,更多的用法及注意事项可以去查看文档:
参考资料:
Android开发中使用SQLite数据库 - IBMAndroid开发中使用 SQLite数据库Android开发中使用 SQLite数据库:http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlite/
【Android开发】:数据存储之 SQLite数据库操作(一):http://blog.csdn.net/ahuier/article/details/10417777
文档:
http://developer.android.com/develop/index.html?q=SQLiteOpenHelper
是什么?
Android提供的用与存储轻量级数据的一个接口。
有啥用?
在Android开发过程中,有时候我们需要保存一些简单的软件配置等简单数据的信息,而如果我们直接用数据库存储的话又不太方便,在这里我们就可以用到SharedPreferences,SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。SharedPreferences文件存储在 data/< 项目文件夹 >/shared_prefs/下。
如何用?
通过Context提供的getSharedPreferences()方法获取SharedPreferences实例
通过SharedPreferences的edit()方法可以Editor对象用与写入数据
总的来说就是可以用SharedPrefrences负责根据key读取数据
SharedPreferences.Editor用与写入数据。
具体的用法可以看一下,我们在app开发时设备参数设置这一块的血压设置:
参考资料
从头学Android之Android的数据存储—SharedPreferences:http://blog.csdn.net/worker90/article/details/697166
是什么?
ContentProvider是不同应程序之间进行数据交换的标准API,是Android开发的四大组件之一,与Activity,Service,BroadcastReceiver相似都需要在AndroidMainfest.xml文件中进行配置。
有啥用?
当系统中多个Android应用需要共享与交换数据时就需要提供一套标准。其中数据的提供应用可以通过提供ContentProvider来实现;数据的获取应用可以通过ContentResolver来操作ContentProvider暴露的数据。
如何用?
图画的很丑,意图就是想用来说明,
第一步:B应用(提供数据)继承实现ContentProvider类,并实现相应的:onCreate();insert();delete();update();query();等方法用于对数据操作。
第二步:将实现了的ContentProvider在B应用的AndroidManifest.xml中进行注册,以便于其他应用访问。
具体的注册例如这样:
<provider
android:name="com.peak.firstprovider.FirstProvider" android:authorities="com.peak.firstprovider"
android:exported="true"/>
第三步:A应用(获取数据)可以通过Context的getContentResolver()方法来获得系统提供的ContentResolver实例。
第四步:A应用中定义访问B应用中ContentProvider的Uri,例如:
Uriuri=Uri.parse("content://com.peak.firstprovider/");
第五步:最后在A应用中可以用ContentResolver的Uri参数的增删改查方法实现对B应用中对于ContentProvider的增删改查方法的调用。
2.然后我们看一个用于演示的最简单的例子:
FirstProvider(应用A,数据提供方),FirstResolver(应用B,数据获取方)
3.最后需要说明的就是,.ContentPriovider的讲述是按照最简单的模式来讲的,更多的实际的开发和应用请参考文档,及其他资料。
参考资料:
Android应用程序组件ContentProvider应用实例:http://blog.csdn.net/luoshengyang/article/details/6950440