android数据存储----SQLite数据库

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

/**
 * SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。
 * 一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法。
 */
public class DBHelper extends SQLiteOpenHelper {

	private SQLiteDatabase db = null;

	private static final int VERSION = 1;
	private static final String DB_NAME = "phone.db";
	private static final String TABLE_NAME = "t_phone";
	private static final String CREATE_TABLE = "create table "+ TABLE_NAME +" ( "
			+ "id integer primary key autoincrement," 
			+ "name varchar(20),"
			+ "sex varchar(2),"
			+ "number text, "
			+ "description text " + ");";

	
	/**
	 * 在SQLiteOpenHelper子类中必须有该构造函数
	 * 
	 * @param context
	 * @param name
	 * @param factory
	 * @param version
	 */
	public DBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	public DBHelper(Context context, String name, int version) {
		this(context, name, null, version);
	}

	public DBHelper(Context context, String name) {
		this(context, name, VERSION);
	}

	/**
	 * 数据库名字和版本号都不能改变了
	 * 
	 * @param context
	 */
	public DBHelper(Context context) {
		this(context, DB_NAME);
	}

	/**
	 * 该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabase对象的时候执行。
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {

		this.db = db;
		System.out.println("create database...");
		// 执行sql语句
		db.execSQL(CREATE_TABLE);
	}

	/**
	 * 数据库升级:当构造函数DBHelper传递的参数version与之前的不一样时调用该函数
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("数据库更新了!");
	}

	/**
	 * 插入数据
	 * 
	 * @param table 表名
	 * @param values 键值对
	 */
	public void insert(String table, ContentValues values) {
		db = this.getWritableDatabase();

		db.insert(table, null, values);

		db.close();
	}

	/**
	 * 查询所有
	 * 
	 * @param table 表名
	 * @return
	 */
	public Cursor query(String table) {
		db = this.getReadableDatabase();
		Cursor cursor = null;
		
		cursor = db.query(table, null, null, null, null, null, null);
		
		return cursor;
		
	}

	/**
	 * 根据唯一标识id 删除数据
	 * 
	 * @param id
	 */
	public void delete(String table, int id) {

		db = this.getWritableDatabase();

		db.delete(table, "id=?", new String[] { id + "" });

		db.close();
	}

	/**
	 * 更新数据库中的内容
	 * 
	 * @param table
	 * @param values
	 * @param whereClause
	 * @param whereArgs
	 */
	public void update(String table, ContentValues values, String whereClause,
			String[] whereArgs) {
		db = this.getWritableDatabase();
		db.update(table, values, whereClause, whereArgs);

		db.close();
	}

	/**
	 * 关闭数据库
	 */
	public void close(){
		if(null != db){
			db.close();
		}
	}
	
}

你可能感兴趣的:(android数据存储----SQLite数据库)