zoukankan      html  css  js  c++  java
  • android数据存取的四种方式

    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.   
    8.     @Override  
    9.     public void onCreate(SQLiteDatabase db) {  
    10.         // TODO Auto-generated method stub  
    11.     }  
    12.   
    13.     @Override  
    14.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
    15.         // TODO Auto-generated method stub  
    16.     }  
    17. }  


    这里是一个程序入口测试类: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.           
    8.         MyDataHelper data = new MyDataHelper(MainActitvity.this,"zhao",null1);//创建一个名叫zhao的数据库  
    9.         final SQLiteDatabase db = data.getWritableDatabase();  
    10.         String createtable = "create table if not exists student(mane varchar(30),age integer)";  
    11.         db.execSQL(createtable);//在zhao中创建一个叫做student的表  
    12.         final String insert = "insert into student values(?,?)";  
    13.         final String query = "select mane from student";  
    14.         //写入数据  
    15.         Button writebtn = (Button)findViewById(R.id.writedata);  
    16.         writebtn.setOnClickListener(new OnClickListener() {  
    17.             @Override  
    18.             public void onClick(View v) {  
    19.                 // 在zhao中插入三条数据  
    20.                 db.execSQL(insert, new Object[]{"xiaoming",10});  
    21.                 db.execSQL(insert, new Object[]{"xiaozhang",10});  
    22.                 db.execSQL(insert, new Object[]{"kankan",10});  
    23.             }  
    24.         });  
    25.         //读取数据  
    26.         Button readbtn = (Button)findViewById(R.id.readdata);  
    27.         readbtn.setOnClickListener(new OnClickListener() {  
    28.             @Override  
    29.             public void onClick(View v) {  
    30.                 // TODO Auto-generated method stub  
    31.                 Cursor cursor = db.rawQuery(query, null);  
    32.                 while (cursor.moveToNext()) {  
    33.                     Toast.makeText(MainActitvity.this,cursor.getString(0),3000).show();//得到第一条数据  
    34.                 }  
    35.             }  
    36.         });  
    37.     }  
    38. }  

    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.   
    8.         //创建zhao.xml文件  
    9.         SharedPreference sp = this.getSharedPreferences("zhao",MODE_APPEND);  
    10.         //获取编辑对象  
    11.         SharedPreferences.Editor edit = sp.edit();  
    12.         //添加值  
    13.         edit.putString("user1","xiaoli");  
    14.         edit.putInt("age",20);  
    15.         //提交  
    16.         edit.commit();  
    17.     }  
    18. }  


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

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

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

  • 相关阅读:
    NameNode格式化后HBase创建新表提示旧表已存在:table already exists
    多次NameNode执行format后DataNode启动不了解决方案
    Zookeeper群起脚本启动失败及查看状态出现:Error contacting service. It is probably not running
    Spark中的术语图解总结
    Spark架构角色及基本运行流程
    大牛博客链接
    python pip安装解决方法
    自动化测试学习路线
    深入理解计算机系统(第三版)
    汇编语言(王爽 第三版)--笔记
  • 原文地址:https://www.cnblogs.com/android100/p/android-get-set-data.html
Copyright © 2011-2022 走看看