日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android【ContentProvider案例】

發布時間:2023/12/31 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android【ContentProvider案例】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ContentProvider實現跨程序數據共享,實例如下:
數據庫基于數據存儲中的使用的數據庫,點擊Here
1】ContentProvider類

public class ContentProvider extends android.content.ContentProvider {private static final int BOOK_DIR = 0;private static final int BOOK_ITEM = 1;private static final int CATEGORY_DIR = 2;private static final int CATEGORY_ITEM = 3;private static final String AUTHORITY = "com.example.android.provider";private static UriMatcher mUriMatcher;private MyDatabaseHelper mHelper;static {mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);mUriMatcher.addURI(AUTHORITY, "book", BOOK_DIR);mUriMatcher.addURI(AUTHORITY, "book/#", BOOK_ITEM);mUriMatcher.addURI(AUTHORITY, "category", CATEGORY_DIR);mUriMatcher.addURI(AUTHORITY, "category/#", CATEGORY_ITEM);}@Overridepublic boolean onCreate() {mHelper = new MyDatabaseHelper(getContext(), "BookStore.db", null, 4);return true;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {SQLiteDatabase db = mHelper.getWritableDatabase();Cursor cursor = null;switch (mUriMatcher.match(uri)) {case BOOK_DIR:cursor = db.query("Book", projection, selection, selectionArgs, null, null, sortOrder);break;case BOOK_ITEM:String bookId = uri.getPathSegments().get(1);cursor = db.query("Book", projection, "id=?", new String[]{bookId}, null, null, sortOrder);break;case CATEGORY_DIR:cursor = db.query("Category", projection, selection, selectionArgs, null, null, sortOrder);break;case CATEGORY_ITEM:String categoryId = uri.getPathSegments().get(1);cursor = db.query("Category", projection, "id=?", new String[]{categoryId}, null, null, sortOrder);break;default:break;}return cursor;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {switch (mUriMatcher.match(uri)) {case BOOK_DIR:return "vnd.android.cursor.dir/vnd.com.example.android.provider.book";case BOOK_ITEM:return "vnd.android.cursor.item/vnd.com.example.android.provider.book";case CATEGORY_DIR:return "vnd.android.cursor.dir/vnd.com.example.android.provider.category";case CATEGORY_ITEM:return "vnd.android.cursor.item/vnd.com.example.android.provider.category";default:break;}return null;}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {SQLiteDatabase db = mHelper.getWritableDatabase();Uri uriRe = null;switch (mUriMatcher.match(uri)) {case BOOK_DIR:case BOOK_ITEM:long newBookId = db.insert("Book", null, values);uriRe = Uri.parse("context://" + AUTHORITY + "/book" + newBookId);break;case CATEGORY_DIR:case CATEGORY_ITEM:long newCategoryId = db.insert("Category", null, values);uriRe = Uri.parse("context://" + AUTHORITY + "/category" + newCategoryId);break;default:break;}return uriRe;}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {SQLiteDatabase db = mHelper.getWritableDatabase();int deleteRows = 0;switch (mUriMatcher.match(uri)) {case BOOK_DIR:deleteRows = db.delete("Book", selection, selectionArgs);break;case BOOK_ITEM:String bookId = uri.getPathSegments().get(1);deleteRows = db.delete("Book", "id=?", new String[]{bookId});break;case CATEGORY_DIR:deleteRows = db.delete("Category", selection, selectionArgs);break;case CATEGORY_ITEM:String categoryId = uri.getPathSegments().get(1);deleteRows = db.delete("Category", "id=?", new String[]{categoryId});break;}return deleteRows;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {SQLiteDatabase db = mHelper.getWritableDatabase();int updateRows = 0;switch (mUriMatcher.match(uri)) {case BOOK_DIR:updateRows = db.update("Book", values, selection, selectionArgs);break;case BOOK_ITEM:String bookId = uri.getPathSegments().get(1);updateRows = db.update("Book", values, "id=?", new String[]{bookId});break;case CATEGORY_DIR:updateRows = db.update("Category", values, selection, selectionArgs);break;case CATEGORY_ITEM:String categoryId = uri.getPathSegments().get(1);updateRows = db.update("Category", values, "id=?", new String[]{categoryId});break;}return updateRows;} }

2】實現增刪改查
查詢數據

private void queryData() {Uri uri = Uri.parse(AGREE + AUTHORITY + CATEGORY);Cursor cursor = getContentResolver().query(uri, null, null, null, null, null);if (cursor != null) {while (cursor.moveToNext()) {// 遍歷Cursor對象,取出數據并打印String category_name = cursor.getString(cursor.getColumnIndex("category_name"));String category_code = cursor.getString(cursor.getColumnIndex("category_code"));Log.d(TAG, "book name is " + category_name);Log.d(TAG, "book author is " + category_code);}}cursor.close();}

更新數據

private void updateData() {Uri uri = Uri.parse(AGREE + AUTHORITY + CATEGORY);ContentValues values = new ContentValues();values.put("category_name", "科幻類");values.put("category_code", 66);getContentResolver().update(uri, values, "category_name=?", new String[]{"科幻類"});}

刪除數據

private void deleteData() {Uri uri = Uri.parse(AGREE + AUTHORITY + CATEGORY + "/" + newId);getContentResolver().delete(uri, null, null);}

添加數據

private void InsertData() {Uri uri = Uri.parse(AGREE + AUTHORITY + CATEGORY);ContentValues values = new ContentValues();values.put("category_name", "科幻類");values.put("category_code", 11);Uri newUri = getContentResolver().insert(uri, values);newId = newUri.getPathSegments().get(1);}

運行結果,查詢數據pass,其他操作failed

總結

以上是生活随笔為你收集整理的Android【ContentProvider案例】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91福利视频网 | www.av在线播放 | 手机天堂网 | 婷婷的五月天 | 日韩极品在线观看 | 直接看的av网站 | 天堂аⅴ在线最新版在线 | 草草影院在线播放 | 色中文| 韩国三级视频在线 | 色大师av一区二区三区 | 成人综合在线视频 | 精品国产午夜福利在线观看 | 日韩精品123 | 伦理片波多野结衣 | 日韩亚洲视频在线观看 | 国产亚洲色婷婷久久 | 国产精品16p | 欧美在线色图 | 噜噜噜久久,亚洲精品国产品 | 国产精品久久久久久久av | 寂寞人妻瑜伽被教练日 | 成人自拍偷拍 | 国产免费一区二区三区最新不卡 | 欧美aaa级片 | 久久久亚洲综合 | 亚洲国产综合在线 | 性欧美大战久久久久久久免费观看 | 泰坦尼克号3小时49分的观看方法 | 双腿张开被9个男人调教 | 久操久操久操 | 色窝av| 7777久久亚洲中文字幕 | 刘亦菲毛片 | 国产精品二 | 99视频导航| 一级免费a | 久久这里只有精品首页 | 污动漫网站 | 婷婷精品视频 | www.成人在线视频 | 亚洲精品视频大全 | 最近中文字幕第一页 | 国产美女激情视频 | 久久久久国 | 国产探花一区二区 | 国产日韩一区二区在线 | 国产成人一区二区三区电影 | 夜夜嗨视频 | 欧美日韩免费观看一区=区三区 | 午夜精品久久久久 | 日本无翼乌邪恶大全彩h | 国模私拍在线观看 | 中文字幕日韩三级 | 国产一区二区观看 | 人人妻人人爽一区二区三区 | 黄色刺激视频 | 国产资源网 | 亚洲色图 欧美 | 日本免费黄视频 | www.brazzers.com | 国产超碰在线观看 | 成人一区二 | 91动态图| 婷婷国产一区二区三区 | 欧美日本中文字幕 | 香蕉a| 国产成人av免费观看 | 欧美日韩一区二区在线 | 阿v免费在线观看 | 日韩精品视频播放 | 婷婷视频在线 | 永久久久久久久 | 奇米97 | 亚洲一二三四区 | 色哟哟av | 欧美激情二区三区 | 日韩在线观看一区二区 | 亚洲啪啪av | chinesepron hd videos国产91 | xxx国产精品 | 日日干天天射 | 中文字幕在线观看亚洲 | 国产精品无码影院 | 一级片一级片 | 午夜成人免费视频 | 永久免费在线视频 | 亚洲欧美日韩免费 | 国产破处在线 | 男生操女生逼逼 | 99热国产在线观看 | 国产性在线 | 日本免费网站视频 | 佐佐木明希av在线 | 国产又色又爽又黄 | 69sex久久精品国产麻豆 | 久久久久五月天 | 亚洲欧美日韩一区二区三区在线观看 | 黑丝一区二区三区 |