1:首先建立一個xxprovider的class,它是extendscontentprovider的。
2:在這個xxprovider中首選定義要建立的資料庫的databasename,以及databaseversion
3:非常重要的是:建立database的authority。值得注意的是這個authority必須和設定檔中的authority必須是一致的
4:建立這個資料庫的要建立的資料表的名字tablename
5:建立外部通過訪問資料表的Uri。(public
static
final Uri
PENDINGLIST_CONTENT_URI = Uri.parse("content://"
+ BrowserProvider.AUTHORITY +
"/"
+BrowserProvider.PENDINGLIST_TABLE_NAME);)值得注意的是這裡必須是Uri而不是url。這個Uri是由三部分來組成。Content://和authority以及資料表。
6:定義需要建立資料表的一些屬性列。然後可以用一個數組將這些屬性列來封裝起來
7:定義一個UriMacther,它的作用是當有多個資料表的時候,用來匹配當前操作的是哪個資料表的Uri
private
static
final UriMatcher
sUriMatcher;
static {
sUriMatcher =
new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY,
BOOKMARK_TABLE_NAME,
BOOKMARK_URI);
sUriMatcher.addURI(AUTHORITY,
PENDINGLIST_TABLE_NAME,
PENDINGLIST_URI);
sUriMatcher.addURI(AUTHORITY,
FOLDER_TABLE_NAME,
FOLDER_URI);
}
8:在這個xxprovider中需要定義一個內部類
Databasehleper它是繼承了SQLiteOpenHelper,這個內部類有一個建構函式,已經重寫了兩個方法。
DatabaseHelper(Context context){
super(context,
DATABASE_NAME,
null,
DATABASE_VERSION);
}
@Override
public
void onCreate(SQLiteDatabase db) {
db.execSQL(“建立資料表的語句”
);
}
@Override
public
void onUpgrade(SQLiteDatabase db,
int oldVersion,
int newVersion) {
db.execSQL("DROP TABLEIF EXISTS " +
FOLDER_TABLE_NAME);
onCreate(db);
}
9:定義databasehleper這個類的一個對象,用於xxprovider來操作
10:重寫xxprovider的幾個方法
Delete insert oncreate query以及update等方法
這些步驟就是如何使用contentprovider來建立資料庫