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(); // 关闭游标 } }