android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx

上传人:b****3 文档编号:8298866 上传时间:2023-05-10 格式:DOCX 页数:23 大小:22.22KB
下载 相关 举报
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第1页
第1页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第2页
第2页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第3页
第3页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第4页
第4页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第5页
第5页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第6页
第6页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第7页
第7页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第8页
第8页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第9页
第9页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第10页
第10页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第11页
第11页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第12页
第12页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第13页
第13页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第14页
第14页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第15页
第15页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第16页
第16页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第17页
第17页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第18页
第18页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第19页
第19页 / 共23页
android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx

《android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx》由会员分享,可在线阅读,更多相关《android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx(23页珍藏版)》请在冰点文库上搜索。

android 玩转ContentProvider之一实现ContentProvider操作数据库文档格式.docx

16. 

int 

DATABASE_VERSION 

1;

17. 

18. 

public 

DatabaseHelper(Context 

context) 

19. 

super(context, 

DATABASE_NAME, 

null, 

DATABASE_VERSION);

20. 

21. 

22. 

@Override 

23. 

void 

onCreate(SQLiteDatabase 

db) 

24. 

db.execSQL("

CREATE 

TABLE 

Provider.PersonColumns.TABLE_NAME 

("

25. 

Provider.PersonColumns._ID 

INTEGER 

PRIMARY 

KEY,"

26. 

Provider.PersonColumns.NAME 

TEXT,"

27. 

Provider.PersonColumns.AGE 

INTEGER"

28. 

);

29. 

30. 

31. 

32. 

onUpgrade(SQLiteDatabase 

db, 

oldVersion, 

newVersion) 

33. 

DROP 

IF 

EXISTS 

Provider.PersonColumns.TABLE_NAME);

34. 

onCreate(db);

35. 

36.} 

packagecom.jacp.database;

importandroid.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

importcom.jacp.demo.provider.Provider;

/**

*操作数据库

*@authorjacp

*

*/

publicclassDatabaseHelperextendsSQLiteOpenHelper{

privatestaticfinalStringDATABASE_NAME="

privatestaticfinalintDATABASE_VERSION=1;

publicDatabaseHelper(Contextcontext){

super(context,DATABASE_NAME,null,DATABASE_VERSION);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL("

CREATETABLE"

+Provider.PersonColumns.TABLE_NAME+"

("

+Provider.PersonColumns._ID+"

INTEGERPRIMARYKEY,"

+Provider.PersonColumns.NAME+"

TEXT,"

+Provider.PersonColumns.AGE+"

INTEGER"

+"

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

DROPTABLEIFEXISTS"

+Provider.PersonColumns.TABLE_NAME);

onCreate(db);

}

保存跟数据库及表有关的常量:

Provider.java

com.jacp.demo.provider;

.Uri;

android.provider.BaseColumns;

5. 

6./** 

7. 

存放跟数据库有关的常量 

9. 

11.public 

Provider 

// 

这个是每个Provider的标识,在Manifest中使用 

14. 

AUTHORITY 

com.jacp.provider.demo.person"

CONTENT_TYPE 

vnd.android.cursor.dir/vnd.jacp.demo"

CONTENT_ITEM_TYPE 

vnd.android.cursor.item/vnd.jacp.demo"

/** 

跟Person表相关的常量 

PersonColumns 

implements 

BaseColumns 

CONTENT_URI跟数据库的表关联,最后根据CONTENT_URI来查询对应的表 

Uri 

CONTENT_URI 

Uri.parse("

content:

//"

+"

/persons"

TABLE_NAME 

person"

DEFAULT_SORT_ORDER 

age 

desc"

NAME 

name"

AGE 

age"

packagecom.jacp.demo.provider;

import.Uri;

importandroid.provider.BaseColumns;

*存放跟数据库有关的常量

publicclassProvider{

//这个是每个Provider的标识,在Manifest中使用

publicstaticfinalStringAUTHORITY="

publicstaticfinalStringCONTENT_TYPE="

publicstaticfinalStringCONTENT_ITEM_TYPE="

/**

*跟Person表相关的常量

publicstaticfinalclassPersonColumnsimplementsBaseColumns{

//CONTENT_URI跟数据库的表关联,最后根据CONTENT_URI来查询对应的表

publicstaticfinalUriCONTENT_URI=Uri.parse("

+AUTHORITY+"

publicstaticfinalStringTABLE_NAME="

publicstaticfinalStringDEFAULT_SORT_ORDER="

agedesc"

publicstaticfinalStringNAME="

publicstaticfinalStringAGE="

对数据增删改查操作的类:

PersonProvider.java

java.util.HashMap;

4. 

android.content.ContentProvider;

6.import 

android.content.ContentUris;

android.content.ContentValues;

8.import 

android.content.UriMatcher;

9.import 

android.database.Cursor;

10.import 

android.database.SQLException;

11.import 

12.import 

android.database.sqlite.SQLiteQueryBuilder;

13.import 

14.import 

android.text.TextUtils;

16.import 

com.jacp.database.DatabaseHelper;

18./** 

操作数据库Person表的ContentProvider 

23.public 

PersonProvider 

ContentProvider 

HashMap<

String, 

String>

sPersonsProjectionMap;

PERSONS 

PERSONS_ID 

2;

UriMatcher 

sUriMatcher;

mOpenHelper;

boolean 

onCreate() 

36. 

mOpenHelper 

new 

DatabaseHelper(getContext());

37. 

return 

true;

38. 

39. 

40. 

41. 

Cursor 

query(Uri 

uri, 

String[] 

projection, 

selection, 

selectionArgs, 

42. 

sortOrder) 

43. 

SQLiteQueryBuilder 

qb 

SQLiteQueryBuilder();

44. 

qb.setTables(Provider.PersonColumns.TABLE_NAME);

45. 

46. 

switch 

(sUriMatcher.match(uri)) 

47. 

case 

PERSONS:

48. 

qb.setProjectionMap(sPersonsProjectionMap);

49. 

break;

50. 

51. 

PERSONS_ID:

52. 

53. 

qb.appendWhere(Provider.PersonColumns._ID 

="

uri.getPathSegments().get

(1));

54. 

55. 

56. 

default:

57. 

throw 

IllegalArgumentException("

Unknown 

URI 

uri);

58. 

59. 

60. 

If 

no 

sort 

order 

is 

specified 

use 

the 

default 

61. 

orderBy;

62. 

if 

(TextUtils.isEmpty(sortOrder)) 

63. 

orderBy 

Provider.PersonColumns.DEFAULT_SORT_ORDER;

64. 

else 

65. 

sortOrder;

66. 

67. 

68. 

Get 

database 

and 

run 

query 

69. 

SQLiteDatabase 

db 

mOpenHelper.getReadableDatabase();

70. 

qb.query(db, 

orderBy);

71. 

72. 

Tell 

cursor 

what 

uri 

to 

watch, 

so 

it 

knows 

when 

its 

source 

data 

changes 

73. 

c.setNotificationUri(getContext().getContentResolver(), 

74. 

c;

75. 

76. 

77. 

78. 

getType(Uri 

uri) 

79. 

80. 

81. 

Provider.CONTENT_TYPE;

82. 

83. 

Provider.CONTENT_ITEM_TYPE;

84. 

85. 

86. 

87. 

88. 

89. 

90. 

insert(Uri 

ContentValues 

initialValues) 

91. 

Validate 

requested 

uri 

92. 

(sUriMatcher.match(uri) 

!

PERSONS) 

93. 

94. 

95. 

96. 

values;

97. 

(initialValues 

null) 

98. 

values 

ContentValues(initialValues);

99. 

100. 

ContentValues();

101. 

102. 

103. 

Make 

sure 

that 

fields 

are 

all 

set 

104. 

(values.containsKey(Provider.PersonColumns.NAME) 

== 

false) 

105. 

values.put(Provider.PersonColumns.NAME, 

106. 

107. 

108. 

(values.containsKey(Provider.PersonColumns.AGE) 

109. 

values.put(Provider.PersonColumns.AGE, 

0);

110. 

111. 

112. 

mOpenHelper.getWritableDatabase();

113. 

long 

rowId 

db.insert(Provider.PersonColumns.TABLE_NAME, 

Provider.PersonColumns.NAME, 

values);

114. 

(rowId 

>

0) 

115. 

noteUri 

ContentUris.withAppendedId(Provider.PersonColumns.CONTENT_URI, 

rowId);

116. 

getContext().getContentResolver().notifyChange(noteUri, 

null);

117. 

noteUri;

118. 

119. 

120. 

SQLException("

Failed 

insert 

row 

into 

121. 

122. 

123. 

124. 

delete(Uri 

where, 

whereArgs) 

125. 

126. 

count;

127. 

128. 

129. 

count 

db.delete(Provider.PersonColumns.TABLE_NAME, 

whereArgs);

130. 

131. 

132. 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2