【移动应用开发技术】Android-ContentProvider (一)创建contentProvider_第1页
【移动应用开发技术】Android-ContentProvider (一)创建contentProvider_第2页
【移动应用开发技术】Android-ContentProvider (一)创建contentProvider_第3页
【移动应用开发技术】Android-ContentProvider (一)创建contentProvider_第4页
【移动应用开发技术】Android-ContentProvider (一)创建contentProvider_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android——ContentProvider(一)创建contentProvider

一、在AndroidManifest.xml文件中添加

<provider

android:name=".StudentProvider"

android:authorities="com.example.android_contentprovider2.StudentProvider"

>

</provider>二、创建数据库SqliteOpenHelperpublic

class

DbHelper

extends

SQLiteOpenHelper

{

private

static

String

name

=

"mydb.db";

private

static

int

version

=

1;//

初始的版本号是一

public

DbHelper(Context

context)

{

super(context,

name,

null,

version);

//

TODO

Auto-generated

constructor

stub

}

@Override

public

void

onCreate(SQLiteDatabase

database)

{

//

TODO

Auto-generated

method

stub

String

sql

=

"create

table

student

(id

integer

primary

key

autoincrement

,name

varchar(64)

,address

varchar(64))";

database.execSQL(sql);//

对数据库的表的创建

}

@Override

public

void

onUpgrade(SQLiteDatabase

db,

int

oldVersion,

int

newVersion)

{

//

TODO

Auto-generated

method

stub

}

}三、创建ContentProviderpublic

class

StudentProvider

extends

ContentProvider

{

private

final

String

TAG

=

"StudentProvider";

private

DbHelper

helper

=

null;

private

static

final

UriMatcher

URI_MATCHER

=

new

UriMatcher(

UriMatcher.NO_MATCH);

private

static

final

int

STUDENT

=

1;//

操作单条记录

private

static

final

int

STUDENTS

=

2;//

操作多条记录

static

{

URI_MATCHER.addURI(

"com.example.android_contentprovider2.StudentProvider",

"student",

STUDENTS);

URI_MATCHER.addURI(

"com.example.android_contentprovider2.StudentProvider",

"student/#",

STUDENT);

}

public

StudentProvider()

{

//

TODO

Auto-generated

constructor

stub

}

@Override

public

int

delete(Uri

uri,

String

selection,

String[]

selectionArgs)

{

//

TODO

Auto-generated

method

stub

int

count

=

-1;//

影响数据库的行数

try

{

int

flag

=

URI_MATCHER.match(uri);

SQLiteDatabase

database

=

helper.getWritableDatabase();

switch

(flag)

{

case

STUDENT:

//

content://com.example.android_contentprovider2.StudentProvider/student/1

//

delete

from

student

where

id

=

?

//id

通过客户端传递过来的

long

id

=

ContentUris.parseId(uri);

String

where_value

=

"

id

=

"

+

id;

if

(selection

!=

null

&&

!selection.equals(""))

{

where_value

+=

"

and

"

+

selection;

}

count

=

database.delete("student",

where_value,

selectionArgs);

break;

case

STUDENTS:

count

=

database.delete("student",

selection,

selectionArgs);

break;

}

}

catch

(Exception

e)

{

//

TODO:

handle

exception

}

return

count;

}

@Override

public

String

getType(Uri

uri)

{

//

TODO

Auto-generated

method

stub

int

flag

=

URI_MATCHER.match(uri);

switch

(flag)

{

case

STUDENT:

return

"vnd.android.cursor.item/student";

case

STUDENTS:

return

"vnd.android.cursor.dir/students";

}

return

null;

}

@Override

public

Uri

insert(Uri

uri,

ContentValues

values)

{

//

TODO

Auto-generated

method

stub

//

insert

into

student

()

(?,?);

Uri

resultUri

=

null;

int

flag

=

URI_MATCHER.match(uri);

switch

(flag)

{

case

STUDENTS:

SQLiteDatabase

database

=

helper.getWritableDatabase();

long

id

=

database.insert("student",

null,

values);//

插入当前行的行号

resultUri

=

ContentUris.withAppendedId(uri,

id);

break;

}

Log.i(TAG,

">>"

+

resultUri.toString());

return

resultUri;

}

@Override

public

boolean

onCreate()

{

//

TODO

Auto-generated

method

stub

helper

=

new

DbHelper(getContext());

return

true;

}

@Override

public

Cursor

query(Uri

uri,

String[]

projection,

String

selection,

String[]

selectionArgs,

String

sortOrder)

{

//

TODO

Auto-generated

method

stub

Cursor

cursor

=

null;

try

{

SQLiteDatabase

database

=

helper.getReadableDatabase();

int

flag

=

URI_MATCHER.match(uri);

switch

(flag)

{

case

STUDENT:

long

id

=

ContentUris.parseId(uri);

String

where_value

=

"

id

=

"

+

id;

if

(selection

!=

null

&&

!selection.equals(""))

{

where_value

+=

"

and

"

+

selection;

}

cursor

=

database.query("student",

null,

where_value,

selectionArgs,

null,

null,

null,

null);

break;

case

STUDENTS:

cursor

=

database.query("student",

null,

selection,

selectionArgs,

null,

null,

null);

break;

}

}

catch

(Exception

e)

{

//

TODO:

handle

exception

}

return

cursor;

}

@Override

public

int

update(Uri

uri,

ContentValues

values,

String

selection,

String[]

selectionArgs)

{

//

TODO

Auto-generated

method

stub

int

count

=

-1;

try

{

//

update

table

set

name

=

?

,address

=

?

where

id

=

?

SQLiteDatabase

database

=

helper.getWritableDatabase();

long

id

=

ContentUris.parseId(uri);

int

flag

=

URI_MATCHER.match(uri);

switch

(flag)

{

case

STUDENT:

String

where_value

=

"

id

=

"

+

id;

if

(selection

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论