下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46815-2025钛合金板材超塑成形和扩散连接工艺规范
- 公共设施管理与维护操作手册(标准版)
- 车站人员考勤管理制度
- 财务管理制度
- 办公室员工培训课程更新制度
- 办公室出差与报销管理制度
- 2026年锡山城发集团公开招聘5人备考题库及完整答案详解1套
- 人教版初中语文七下《骆驼祥子》基础复习必刷题(附答案)
- 2026年葫芦岛市南票区政府专职消防队员招聘37人备考题库及参考答案详解一套
- 关于选聘“警民联调”室专职人民调解员20人的备考题库参考答案详解
- 2025-2026学年教科版(新教材)二年级上册科学全册知识点梳理归纳
- MDT在老年髋部骨折合并症患者中的应用策略
- 2026天津农商银行校园招聘考试历年真题汇编附答案解析
- 八上语文期末作文押题常考主题佳作
- 番茄的营养及施肥
- 2025年国家开放大学电大《电子商务概论》机考真题题库及答案1
- 气象行业气象设备运维工程师岗位招聘考试试卷及答案
- 雾化吸入治疗效果的评估与观察
- 员工侵吞货款协议书
- 防爆墙泄压墙施工方案
- 创意美术生蚝课件
评论
0/150
提交评论