Android数据的四种存储方式: 作为一个完成的应用程序,数据存储操作是必不可少的。因此, Android 系统一共提供了四种数据存储方式。分别是: SharePreference 、 SQLite 、 Content Provider 和 File 。由于 Android 系统中,数据基本都是私有的的,都是存放于“ data/data/ 程序包名”目录下,所以要实现数据共享,正确方式是使用 Content Provider 。
SQLite:  SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
   SharedPreference:  除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
   File:  即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider:  Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
SQLite 是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:
     NULL : 空值
     INTEGER : 整数
     REAL : 浮点数
     TEXT : 字符串
     BLOB : 大数据
  在 SQLite 中,并没有专门设计 BOOLEAN 和 DATE 类型,因为 BOOLEAN 型可以用 INTEGER 的 0 和 1 代替 true 和 false ,而 DATE 类型则可以拥有特定格式的 TEXT 、 REAL 和 INTEGER 的值来代替显示,为了能方便的操作 DATE 类型, SQLite 提供了一组函数,
  在 Android 系统中提供了 android.database.sqlite 包,用于进行 SQLite 数据库的增、删、改、查工作。其主要方法如下:
   close():  关闭连接,释放资源。
   delete(String table, String whereClause, String[] whereArgs):  根据给定条件,删除符合条件的记录。
   execSQL(String sql):  执行给定 SQL 语句。
   insert(String table, String nullColumnHack, ContentValues values):  根据给定条件,插入一条记录。 
   openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory):  根据给定条件连接数据库,如果此数据库不存在,则创建。
   query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy):  执行查询。
   rawQuery(String sql, String[] selectionArgs):  根据给定 SQL ,执行查询。

  update(String table, ContentValues values, String whereClause, String[] whereArgs): 根据给定条件,修改符合条件的记录。

代码如下:

package com.example.myandroid.db;

import java.util.ArrayList;

import com.example.myandroid.entity.News;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class NewsDao {

	private MySQLiteOpenHelper dbOpenHelper;

	public NewsDao(Context mContext) {
		dbOpenHelper = new MySQLiteOpenHelper(mContext);
	}

	/*
	 * 数据库添加
	 */
	public void addNews(String title, String author) {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("title", title);
		values.put("author", author);
		db.insert(MySQLiteOpenHelper.NEWS_TAB, null, values);
		db.close();
	}
	/*
	 * 数据删除
	 */
	public void deleteNews(int id){
		SQLiteDatabase db=dbOpenHelper.getReadableDatabase();
		db.delete(MySQLiteOpenHelper.NEWS_TAB, "id=?", new String[]{id+""});
		db.close();
	}

	/*
	 * 数据更新
	 */
	public void updateNews(int id, String title, String author) {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("title", title);
		values.put("author", author);
		db.update(MySQLiteOpenHelper.NEWS_TAB, values, "id=?",
				new String[] { id + "" });
		db.close();
	}

	/*
	 * 数据查询
	 */
	public ArrayList<News> findNews() {
		ArrayList<News> list = new ArrayList<News>();
		SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
		Cursor cursor = db.query(MySQLiteOpenHelper.NEWS_TAB, new String[] {
				"id", "title", "author" }, null, null, null, null, null);
		while(cursor.moveToNext()){
			int id=cursor.getInt(cursor.getColumnIndex("id"));
			String title=cursor.getString(cursor.getColumnIndex("title"));
			String author=cursor.getString(cursor.getColumnIndex("author"));
			News news=new News();
			news.setId(id);
			news.setTitle(title);
			news.setAuthor(author);
			list.add(news);
		}
		cursor.close();
		db.close();
		return list;
	}
}