博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内容提供者编写步骤
阅读量:5273 次
发布时间:2019-06-14

本文共 5334 字,大约阅读时间需要 17 分钟。

1. 写一个类继承系统的ContentProvider

2. 在清单文件中注册

 

3. 暗号 URI

static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);      static{           //添加URI的匹配规则           matcher.addURI("tian.wang.gai.di.hu", "bao.ta.zhen.he.yao",URI_SUCC);      }

 

4. 实现数据的增删改查的操作

 

package com.example.bank;import android.content.ContentProvider;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;/** * 1. 写一个类继承系统的ContentProvider *  * 数据库管理员 *  双面间谍  */public class BankProvider extends ContentProvider {   private static final int URI_SUCC = 0;   private static final int URI_SUCC_QUERY  = 1;   private static final int URI_SUCC_ACCOUNT   = 2;   private static final int URI_SUCC_BALC   = 3;   private BankDbOpenHelper helper;   private SQLiteDatabase   db;  //3. 暗号  URI   static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);   static{      //添加URI的匹配规则      matcher.addURI("tian.wang.gai.di.hu", "bao.ta.zhen.he.yao",URI_SUCC);          //添加URI的匹配规则   用方法名  query      matcher.addURI("tian.wang.gai.di.hu", "query",URI_SUCC_QUERY);          //添加URI的匹配规则   用方法名  account 表名  推荐使用      matcher.addURI("tian.wang.gai.di.hu", "account",URI_SUCC_ACCOUNT);      //添加URI的匹配规则   用方法名  black 表名  推荐使用      matcher.addURI("tian.wang.gai.di.hu", "black",URI_SUCC_BALC);      //添加URI的匹配规则   用方法名  account/2      matcher.addURI("tian.wang.gai.di.hu", "account/2",URI_SUCC_ACCOUNT);/添加URI的匹配规则   用方法名  account/#      matcher.addURI("tian.wang.gai.di.hu", "account/#",URI_SUCC_ACCOUNT);  }   @Override   public boolean onCreate() {      helper = new BankDbOpenHelper(getContext());      db = helper.getWritableDatabase();      return false;   }   @Override   public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {      int code = matcher.match(uri);      if (code == URI_SUCC_QUERY) {         Cursor cursor = db.query("account", projection, selection, selectionArgs, null, null, sortOrder);              //发出通知         getContext().getContentResolver().notifyChange(uri, null);         return cursor;      }else if(code == URI_SUCC_BALC){         Cursor cursor = db.query("black", projection, selection, selectionArgs, null, null, sortOrder);         return cursor;      }else {         throw new IllegalArgumentException("根据相关的法律规定,您无权操作银行数据库!") ;        }   }   /**    *  vnd.android.cursor.item 单行数据      vnd.android.cursor.dir/ 多行数据库    */   @Override   public String getType(Uri uri) {      return null;   }/**    * 4. 实现增的方法    *     * content://tian.wang.gai.di.hu/bao.ta.zhen.he.yao    *     */   @Override   public Uri insert(Uri uri, ContentValues values) {      int code = matcher.match(uri);      if (code == URI_SUCC) {         //行长操作的数据库         long id = db.insert("account", null, values);         //发出通知         getContext().getContentResolver().notifyChange(uri, null);         return Uri.parse("id:"+id);      }else if(code == URI_SUCC_BALC){         long id = db.insert("black", null, values);         return Uri.parse("id:"+id);      }else {         throw new IllegalArgumentException("根据相关的法律规定,您无权操作银行数据库!") ;        }   }   @Override   public int delete(Uri uri, String selection, String[] selectionArgs) {      int code = matcher.match(uri);      if (code == URI_SUCC_ACCOUNT) {         int id = db.delete("account", selection, selectionArgs);         //发出通知         getContext().getContentResolver().notifyChange(uri, null);         return id;      }else if(code == URI_SUCC_BALC){         int id = db.delete("black", selection, selectionArgs);         return id;      }else {         throw new IllegalArgumentException("根据相关的法律规定,您无权操作银行数据库!") ;        }   }   @Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {      int code = matcher.match(uri);      if (code == URI_SUCC_ACCOUNT) {         int id = db.update("account", values, selection, selectionArgs);         //发出通知         getContext().getContentResolver().notifyChange(uri, null);         return id;      }else if(code == URI_SUCC_BALC){         int id = db.update("black", values, selection, selectionArgs);         return id;      }else {         throw new IllegalArgumentException("根据相关的法律规定,您无权操作银行数据库!") ;        }   } }

package com.example.bank;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class BankDbOpenHelper extends SQLiteOpenHelper {   /**    * 构造方法    *     * @param context    *            上下文    * @param name    *            数据库的名称    * @param factory    *            游标工厂 null    * @param version    *            数据库的版本号 >= 1    */   public BankDbOpenHelper(Context context) {      super(context,"bank.db",null,2);   }   /**    * 第一次创建数据库的时候调用    * 适合做一些初始化的事情    */   @Override   public void onCreate(SQLiteDatabase db) {      db.execSQL("create table account(_id integer primary key autoincrement,name varchar(20),money varchar(20))");   }   /**    * 升级数据库的时候调用    */   @Override   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      db.execSQL("create table black(_id integer primary key autoincrement,name varchar(20),money varchar(20))");     }}

 

转载于:https://www.cnblogs.com/loaderman/p/6420983.html

你可能感兴趣的文章