Android系统下有四种数据的存在形式,分别是SQLite,SharePreference,File,ContentProvider。
一:特性介绍:
SQLite:对于大多数开发者而言,这应该是大家非常熟悉的数据存储方式了吧。我就不多做介绍了。
在Android中使用SQLite进行数据存取也不复杂:与以前我们做的java不同的是,Android中需要一个处理类SQLiteOpenHelper。
下面我们通过一个简单的事例代码来说明。
1-------------SQLite

新建一个类MySqlHanlder.java继承至SQLiteOpenHelper,实现所有的方法并生成构造函数。

  1. public class MyDataHelper extends SQLiteOpenHelper {
  2. public MyDataHelper(Context context, String name, CursorFactory factory,
  3. int version) {
  4. super(context, name, factory, version);
  5. // TODO Auto-generated constructor stub
  6. }
  7. @Override
  8. public void onCreate(SQLiteDatabase db) {
  9. // TODO Auto-generated method stub
  10. }
  11. @Override
  12. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  13. // TODO Auto-generated method stub
  14. }
  15. }

这里是一个程序入口测试类:MainActitvity.java

  1. public class MainActitvity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. MyDataHelper data = new MyDataHelper(MainActitvity.this,"zhao",null, 1);//创建一个名叫zhao的数据库
  8. final SQLiteDatabase db = data.getWritableDatabase();
  9. String createtable = "create table if not exists student(mane varchar(30),age integer)";
  10. db.execSQL(createtable);//在zhao中创建一个叫做student的表
  11. final String insert = "insert into student values(?,?)";
  12. final String query = "select mane from student";
  13. //写入数据
  14. Button writebtn = (Button)findViewById(R.id.writedata);
  15. writebtn.setOnClickListener(new OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. // 在zhao中插入三条数据
  19. db.execSQL(insert, new Object[]{"xiaoming",10});
  20. db.execSQL(insert, new Object[]{"xiaozhang",10});
  21. db.execSQL(insert, new Object[]{"kankan",10});
  22. }
  23. });
  24. //读取数据
  25. Button readbtn = (Button)findViewById(R.id.readdata);
  26. readbtn.setOnClickListener(new OnClickListener() {
  27. @Override
  28. public void onClick(View v) {
  29. // TODO Auto-generated method stub
  30. Cursor cursor = db.rawQuery(query, null);
  31. while (cursor.moveToNext()) {
  32. Toast.makeText(MainActitvity.this,cursor.getString(0),3000).show();//得到第一条数据
  33. }
  34. }
  35. });
  36. }
  37. }

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/writedata"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="Write"
  12. ></Button>
  13. <Button
  14. android:id="@+id/readdata"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:text="Read"
  18. ></Button>
  19. </LinearLayout>

2-------------SharePreference
(我们也通常称之为小文件,它的本质是一个xml文件,常用来存一些简单的参数)用法非常简单:

  1. public class MainActitvity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. //创建zhao.xml文件
  8. SharedPreference sp = this.getSharedPreferences("zhao",MODE_APPEND);
  9. //获取编辑对象
  10. SharedPreferences.Editor edit = sp.edit();
  11. //添加值
  12. edit.putString("user1","xiaoli");
  13. edit.putInt("age",20);
  14. //提交
  15. edit.commit();
  16. }
  17. }

3-------------File(I/O)这应该是每一个Java程序员非常熟悉的数据存取方式了吧,用IO方式存取数据就不仅仅局限与
一些字符串了,图片,音乐,文档等等文件都可以通过IO方式来。这里我就举一个在Android开发中常用的IO操作:

呵呵,请各位参考我的另一篇博客:---------Android从网络加载图片
4.------------ContentProvider
大家都知道:上面三种数据都是一个程序私有的,它们存在于程序的安装文件中,因此它们不能够被其他的应用程序共享。
所以这时就有ContentProvider来实现共享数据的功能了,ContentProvider的标准解释是:“不同程序间进行数据交换的标准API”,
比如:我们新建一个工程去获取系统联系人列表,或者去获取Camera下的照片,录像等,就需要使用这些程序提供的ContentProvider接口来实现“桥梁”的功能。
参考博客--------ContentProvider应用实例

也希望各位学习批评指正。

android数据存取的四种方式的更多相关文章

  1. android 数据存储的四种方式.

    Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放 ...

  2. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  3. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsyn ...

  4. android 数据存储的几种方式

    总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数 ...

  5. [转]JSon数据解析的四种方式

    转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的js ...

  6. Android数据存储的三种方式:SharePreferences , file , SQLite

    (1)SharePreferences: 存入: SharedPreferences setter = this.getSharedPreferences("spfile", 0) ...

  7. ASP.NET MVC之从控制器传递数据到视图四种方式(一)

    前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...

  8. ASP.NET MVC之从控制器传递数据到视图四种方式

    前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...

  9. web前后台数据交互的四种方式(转)

    1.利用cookie对象  Cookie是服务器保存在客户端中的一小段数据信息.使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置.一般不赞成使用Cookie. (1 ...

随机推荐

  1. input[type="checkbox"]与label对齐

    项目中遇到文字与 checkbook 无法水平对齐, 源码如下: <div align='center'> <input type="checkbox" id=& ...

  2. centos7.2安装社区版docker-ce-17.06.1

    先yum install安装如下包: container-selinux-2.21-1.el7.noarch libcgroup-0.41-13.el7.x86_64 libtool-ltdl-2.4 ...

  3. vsphere storage appliance工作原理和实施

    摘录自:http://www.07net01.com/storage_networking/VMwarexunihuazhiVSA_vSphere_Storage_Appliance_qunji_yi ...

  4. 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)

    持续集成篇_08_Hudson持续集成服务器的使用(自动化编译.分析.打包.部署) 1.创建任务 svn用户验证 验证通过 *****五颗*表示每分钟检查svn路径是否有变更,有变更就会重新构建,相当 ...

  5. Mac下Android绘制点9格式png以及解决IllegalArgumentException: Unknown image type 0报错

    在Mac下的AndroidStudio中,右键png图片选择“create 9-patch-file”时会报错:IllegalArgumentException: Unknown image type ...

  6. SpringMVC学习笔记六:使用 hibernate-validator注解式数据校验

    对客户端传过来的参数,在使用前一般需要进行校验. SpringMVC框架内置了Validator验证接口,但是实现起来太麻烦.我们一般使用 hibernate-validator进行数据校验. 1:j ...

  7. openerp 7.0邮件接收中文附件乱码问题解决办法

    openerp 7.0邮件接收中文附件乱码问题解决办法: 修改文件\addons\mail\mail_thread.py #1064 line插入代码: h=email.Header.Header(n ...

  8. MyBatis Spring MapperScannerConfigurer 配置

    没有必要在 Spring 的 XML 配置文件中注册所有的映射器.相反,你可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 ...

  9. 【shell】各种括号()、(())、[]、[[]]、{}的使用

    圆括号 1.单圆括号() ①命令组,括号中的命令将会开启一个子shell独立运行:括号中以分号连接,最后一个命令不需要;各命令和括号无需空格 Linux:/qins # (var=1;echo $va ...

  10. Spring Aspect实现AOP切面

    百度搜索的大部分的文章(demo)都只是对简单的方法进行切面(例如:public String say(String name)),却未介绍在入参是不固定的时候改怎么处理,后来查到可以使用org.as ...