android数据存取的四种方式

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

1-------------SQLite

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

public class MyDataHelper extends SQLiteOpenHelper {
	public MyDataHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}
}

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

public class MainActitvity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        MyDataHelper data = new MyDataHelper(MainActitvity.this,"zhao",null, 1);//创建一个名叫zhao的数据库
        final SQLiteDatabase db = data.getWritableDatabase();
        String createtable = "create table if not exists student(mane varchar(30),age integer)";
        db.execSQL(createtable);//在zhao中创建一个叫做student的表
        final String insert = "insert into student values(?,?)";
        final String query = "select mane from student";
		//写入数据
        Button writebtn = (Button)findViewById(R.id.writedata);
        writebtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 在zhao中插入三条数据
				db.execSQL(insert, new Object[]{"xiaoming",10});
				db.execSQL(insert, new Object[]{"xiaozhang",10});
				db.execSQL(insert, new Object[]{"kankan",10});
			}
		});
		//读取数据
        Button readbtn = (Button)findViewById(R.id.readdata);
        readbtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Cursor cursor = db.rawQuery(query, null);
				while (cursor.moveToNext()) {
					Toast.makeText(MainActitvity.this,cursor.getString(0),3000).show();//得到第一条数据
				}
			}
		});
    }
}
main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<Button
		android:id="@+id/writedata"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="Write"
	></Button>
	<Button
		android:id="@+id/readdata"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="Read"
	></Button>
</LinearLayout>

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

public class MainActitvity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

		//创建zhao.xml文件
		SharedPreference sp = this.getSharedPreferences("zhao",MODE_APPEND);
		//获取编辑对象
		SharedPreferences.Editor edit = sp.edit();
		//添加值
		edit.putString("user1","xiaoli");
		edit.putInt("age",20);
		//提交
		edit.commit();
    }
}

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值