Android:SQLiteOpenHelper,SqliteDatabase学习

/**
 * SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能
 * 第一,getReadableDatabase()、getWritableDatabase
 * ()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
 * 第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作
 * 
 * 这个类只用于创建,升级数据库和表,具体数据在包action里操作
 */
public class DatabaseHelper extends SQLiteOpenHelper {

	public static final String DB_DBNAME = "contact";
	public static final String DB_TABLENAME = "user";
	public static final int VERSION = 4;

	/**
	 * 在SQLiteOpenHelper的子类当中,必须有该构造函数
	 * 
	 * @param context
	 *            上下文对象
	 * @param name
	 *            数据库名称
	 * @param factory
	 * @param version
	 *            当前数据库的版本,值必须是整数并且是递增的状态 ,并且必须大于等于1,当我们在创建的时候改变version如果本表已经存在,那么这个不会执行onCreate只会执行onUpgrade
	 */
	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		// 必须通过super调用父类当中的构造函数,从而创建数据库;但是这里并不创建数据库,当调用getReadableDatabase()、getWritableDatabase()宾才会创建数据库。
		super(context, name, factory, version);
	}

	public DatabaseHelper(Context context, String name) {
		super(context, name, null, 4);
	}

	/**
	 * 该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法,可以在这里创建数据表;
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		System.out.println("create a table");
		StringBuffer sql = new StringBuffer("");
		sql.append("create table ").append(DB_TABLENAME).append(" (")
				.append("_id integer primary key autoincrement,")
				.append("name text,").append("mobilephone text,")
				.append("officephone text,").append("familyphone text,")
				.append("address text,").append("othercontact text,")
				.append("email text,").append("position text,")
				.append("company text,").append("zipcode text,")
				.append("remark text,").append("imageid int,")
				.append("privacy int ").append(")");
		System.out.println(sql.toString());
		db.execSQL(sql.toString());
	}

	/**
	 * 升级数据库,当只有更新版本的时候,就会执行,但不会执行onCreate方法 
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		String sql = "drop table if exists " + DB_TABLENAME;
		db.execSQL(sql);
		onCreate(db);
	}

}



实例源码下载:Android之Sqlite数据库操作实例

你可能感兴趣的:(android,数据库,String,sqlite,table,Integer)