2013年2月23日 星期六

建立ContentProvider_20130223


package com.example.booksystem_20130219;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;

//在含有資料庫的App中建立一個class繼承ContentProvider
public class BookDBContentProvider extends ContentProvider{
//建立獨一無二的域名
private final static String AUTHORITY="tw.com.jimbo.FindBook";
//供查詢資料表名稱
private final static String DB_TABLE_NAME="BooksInfo";
//建立連此資料庫的路徑(URI物件),注意是public
public final static Uri CONTENT_URI=Uri.parse("content://"+AUTHORITY+"/"+DB_TABLE_NAME);
//建立URI根目錄及資料表的子目錄(節點)
private final static int URI_ROOT=0,DB_TABLE_BOOKS=1;
//建立URI比對物件,建構式放入URI根目錄(節點)的int值
private final static UriMatcher myUriMatcher=new UriMatcher(URI_ROOT);
private BookHelper myBookHelper;
//預先載入區塊加入URI到這個比對物件
static{
myUriMatcher.addURI(AUTHORITY, DB_TABLE_NAME, DB_TABLE_BOOKS);
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}

@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}

@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
return null;
}

//於onCreate()時期產生BookHelper的物件,產生後回傳true
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
myBookHelper=new BookHelper(getContext());
return true;
}

//覆寫query方法
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
//檢查是否為查詢的節點,不是則回傳null
if(myUriMatcher.match(uri) != DB_TABLE_BOOKS){
return null;
}
Cursor myCursor=myBookHelper.query();
return myCursor;
}

@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}

}
記得在manifest的application中加入
<provider 
android:name="com.example.booksystem_20130219.BookDBContentProvider"
 android:authorities="tw.com.jimbo.FindBook">            
</provider>

沒有留言:

張貼留言