--------------------------------------------AndroidManifest.xml----------------------------------

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.ch23"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="15"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<!--单元测试包-->

<uses-libraryandroid:name="android.test.runner"/>

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<!--注册ContentProvider-->

<providerandroid:name=".provider.MyProvider"android:authorities="com.ch23.provider.myprovider"></provider>

</application>

<!--单元测试声明-->

<instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="com.ch23"></instrumentation>

</manifest>

--------------------------------------------Layoutactivity_main.xml-----------------------------

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

</LinearLayout>

--------------------------------------------ActivityMainActivity.java-----------------------------

packagecom.ch23;

importandroid.app.Activity;

importandroid.os.Bundle;

publicclassMainActivityextendsActivity{

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

--------------------------------------------DB目录Const.java-----------------------------------

packagecom.ch23.db;

/*常量类*/

publicclassConst{

publicfinalstaticStringCONTENTPROVIDER="com.ch23.provider.myprovider";

/*UriC,代表返回多条数据*/

publicfinalstaticintSTU_LIST=1;

/*UriD*,代表返回一条数据*/

publicfinalstaticintSTU_DETAIL=2;

}

--------------------------------------------DB目录DBHelper.java-------------------------------

packagecom.ch23.db;

importandroid.content.ContentValues;

importandroid.content.Context;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

/**

*

*项目名称:com.ch23

*类名称:DBHelper

*类描述:数据库操作工具类

*创建人:方勇

*创建时间:2012-12-10下午8:25:47

*Copyright(c)方勇-版权所有

*/

publicclassDBHelper{

privatestaticDatabaseHelperdatabaseHelper;//数据库定义语言,创建数据库,DDL,定义数据结构

privatestaticSQLiteDatabasedb;//数据库操作对象,DML,数据库操作

privateStringDATABASE_NAME="a07.db";

privateintDATABASE_VERSION=1;//数据库版本,必须赋值

privateContextcontext;//定义一个上下文对象

/*构造方法*/

publicDBHelper(Contextcontext){

this.context=context;

}

/*打开数据库的方法*/

publicDBHelperopen(){

databaseHelper=newDatabaseHelper(context);

db=databaseHelper.getWritableDatabase();

returnthis;

}

//关闭数据库

publicvoidclose(){

db.close();

databaseHelper.close();

}

/*插入数据*/

publiclonginsert(StringtableName,ContentValuesvalues){

returndb.insert(tableName,null,values);

}

/*删除数据*/

publicbooleandelete(StringtableName,StringwhereClause,

String[]whereArgs){

returndb.delete(tableName,whereClause,whereArgs)>0;

}

/*更新数据*/

publicbooleanupdate(StringtableName,ContentValuesvalues,

StringwhereClause,String[]whereArgs){

returndb.update(tableName,values,whereClause,whereArgs)>0;

}

/*取得一个列表*/

publicCursorfindList(StringtableName,String[]columns,

Stringselection,String[]selectionArgs,StringgroupBy,

Stringhaving,StringOrderBy){

returndb.query(tableName,columns,selection,selectionArgs,groupBy,

having,OrderBy);

}

/*取得单行记录*/

publicCursorfindInfo(StringtableName,String[]columns,

Stringselection,String[]selectionArgs,StringgroupBy,

Stringhaving,StringorderBy){

Cursorcursor=db.query(tableName,columns,selection,selectionArgs,

groupBy,having,orderBy);

while(cursor.moveToNext()){

cursor.moveToFirst();

}

returncursor;

}

/*执行sql语句*/

publicvoidexecuteSql(Stringsql){

db.execSQL(sql);

}

/*SQLiteopenHelper是一个抽象类,来管理数据库的创建和版本的管理*/

privateclassDatabaseHelperextendsSQLiteOpenHelper{

publicDatabaseHelper(Contextcontext){

super(context,DATABASE_NAME,null,DATABASE_VERSION);

}

//创建表结构

@Override

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL("createtableifnotexistsstu(idintegerprimarykey,nametext)");

db.execSQL("insertintostuvalues(1,'a1')");

db.execSQL("insertintostuvalues(2,'a2')");

db.execSQL("insertintostuvalues(3,'a3')");

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

}

}

}

--------------------------------------------provider目录MyProvider.java-----------------------

packagecom.ch23.provider;

importcom.ch23.db.Const;

importcom.ch23.db.DBHelper;

importandroid.content.ContentProvider;

importandroid.content.ContentUris;

importandroid.content.ContentValues;

importandroid.content.UriMatcher;

importandroid.database.Cursor;

importandroid.net.Uri;

/**

*

*项目名称:com.ch23

*类名称:MyProvider

*类描述:对外应用程序提供数据

*创建人:方勇

*创建时间:2012-12-10下午8:26:09

*Copyright(c)方勇-版权所有

*/

publicclassMyProviderextendsContentProvider{

/*数据库操作*/

privateDBHelperdbHelper;

/*匹配工具类*/

privatestaticfinalUriMatcherMATCHER=newUriMatcher(

UriMatcher.NO_MATCH);

/*初始化数据,匹配工具类*/

static{

MATCHER.addURI(Const.CONTENTPROVIDER,"stu",Const.STU_LIST);

MATCHER.addURI(Const.CONTENTPROVIDER,"stu/#",Const.STU_DETAIL);

}

@Override

publicbooleanonCreate(){

dbHelper=newDBHelper(this.getContext());

/*打开数据库*/

dbHelper.open();

returnfalse;

}

@Override

publicintdelete(Uriuri,Stringselection,String[]selectionArgs){

return0;

}

@Override

publicStringgetType(Uriuri){

returnnull;

}

@Override

publicUriinsert(Uriuri,ContentValuesvalues){

returnnull;

}

@Override

publicCursorquery(Uriuri,String[]projection,Stringselection,

String[]selectionArgs,StringsortOrder){

/*匹配URI,是C还是D*/

switch(MATCHER.match(uri)){

/*多条记录*/

caseConst.STU_LIST:

returndbHelper.findList("stu",null,null,null,null,null,null);

caseConst.STU_DETAIL:

longid=ContentUris.parseId(uri);

Stringwhere="id="+id;

//where+="and"+selection;

returndbHelper.findList("stu",null,where,null,null,null,null);

default:

thrownewIllegalArgumentException("urierror"+uri.toString());

}

}

@Override

publicintupdate(Uriuri,ContentValuesvalues,Stringselection,

String[]selectionArgs){

return0;

}

}

--------------------------------------------provider目录Test.java-------------------------------

packagecom.ch23.provider;

importcom.ch23.db.Const;

importandroid.content.ContentResolver;

importandroid.database.Cursor;

importandroid.net.Uri;

importandroid.test.AndroidTestCase;

/*单元测试*/

publicclassTestextendsAndroidTestCase{

publicvoidtestQuery(){

/*取数据对象*/

ContentResolverresolver=this.getContext().getContentResolver();

/*查询所有的数据*/

Uriuri=Uri.parse("content://"+Const.CONTENTPROVIDER+"/stuss");

/*取数据*/

Cursorcursor=resolver.query(uri,newString[]{"id","name"},null,null,null);

while(cursor.moveToNext()){

System.out.println("name:"+cursor.getString(cursor.getColumnIndex("name")));

}

}

}

--------------------------------------------结果----------------------------------------------------

ch023 Android ContentProvider(第一部分,单元测试)_第1张图片

<!--EndFragment-->

更多相关文章

  1. android sd卡读取数据库
  2. Android架构组件- Room数据库的使用
  3. Android 5.1 open data flow 数据开启流程
  4. ContentProvider数据共享
  5. android root后数据安全
  6. Android基础笔记(四)-数据存储和界面展现
  7. Android中数据存储的5种方法
  8. Android数据加密之Des加密
  9. Android 数据库之 SQLiteConnectionPool 源码分析

随机推荐

  1. Android学习笔记----HttpURLConnection
  2. Android 30月入门到精通(6) Android JNuit
  3. Android基于ProductFlavors动态配置权限
  4. CyanogenMod源码下载和编译(Android ROM
  5. Eclipse(Windowns XP)下搭建Android开发
  6. 怎样查看程序的历史运行时间?
  7. Android 新版个税计算小demo程序
  8. Android中Build Target,minSdkVersitarge
  9. view对touch事件的处理
  10. android post 提交数据