ContentProvicer的基本使用

SqliteHelper.java

package sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class SqliteHelper extends SQLiteOpenHelper{


   // 表名
   public static final String USER_TABLE_NAME = "persons";

   public SqliteHelper(Context context) {
      super(context, "Person.db", null, 1);
      // TODO Auto-generated constructor stub
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      db.execSQL("create table "+ USER_TABLE_NAME+"(id integer primary key autoincrement," +
            "name text," +
            "sex text)");
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub
      
   }

}

==============

MyContentProvider.java

package contentprovider;

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;

import sqlite.SqliteHelper;

public class MyContentProvider extends ContentProvider {

    private SqliteHelper helper;
    private SQLiteDatabase database;
    public static final int persons_Code = 1;

    //规则池
    public static final UriMatcher mMatcher = new UriMatcher(UriMatcher.NO_MATCH);

    //添加规则
    static {
        /*
         * authority  别名
         * path      路径
         * code   匹配成功返回的参数
         */
        mMatcher.addURI("com.android.1601b", "persons", persons_Code);

    }


    @Override
    public boolean onCreate() {

        helper = new SqliteHelper(getContext());
        database = helper.getReadableDatabase();
        database.execSQL("insert into persons (name,sex) values ('wzq','男');");
        database.execSQL("insert into persons (name,sex) values ('sjx','男');");


        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        return database.query("persons", projection, selection, selectionArgs, null, null, sortOrder);


    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // 根据URI匹配 URI_CODE,从而匹配ContentProvider中相应的表名
        // 该方法在最下面
        String table = getTableName(uri);

        // 向该表添加数据
        database.insert(table, null, values);


        return uri;

    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {

        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {


        return 0;
    }


    /**
     * 根据URI匹配 URI_CODE,从而匹配ContentProvider中相应的表名
     */
    private String getTableName(Uri uri) {

        String tableName = null;
        switch (mMatcher.match(uri)) {
            case persons_Code:
                tableName = SqliteHelper.USER_TABLE_NAME;
                break;

        }
        return tableName;
    }


}

 

 

=========

发起访问的程序Activity

MainActivity.java

package com.example.contentprovoidr_contact_demo1;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //点击按钮
    public void getcontast(View v){

      /**
       * 对user表进行操作
       */

      // 设置URI
      Uri uri_user = Uri.parse("content://com.android.1606b/persons");

      // 插入表中数据
      ContentValues values = new ContentValues();
      values.put("name", "aaa");
      values.put("sex", "man");


      // 获取ContentResolver
      ContentResolver resolver =  getContentResolver();
      // 通过ContentResolver 根据URI 向ContentProvider中插入数据
      resolver.insert(uri_user,values);


      // 通过ContentResolver 向ContentProvider中查询数据
      Cursor cursor = resolver.query(uri_user, new String[]{"name","sex"}, null, null, null);
      while (cursor.moveToNext()){
         System.out.println("查询信息:"
               + cursor.getString(cursor.getColumnIndex("name"))+
               cursor.getString(cursor.getColumnIndex("sex")));
         // 将表中数据全部输出
      }
      cursor.close();
      // 关闭游标


       
    }
    
    
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值