package hx.android.test;
import java.util.HashMap;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;
public class MyContentProvider extends ContentProvider {
private static final String TABLE_NAME = "mytable";
private static final int TABLES = 1;
private static final int TABLE_ID = 2;
private static final UriMatcher sUriMatcher ;
static{//注册需要匹配的Uri
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(Mytable.MyColumns.AUTHORITY, "mytable", TABLES);
sUriMatcher.addURI(Mytable.MyColumns.AUTHORITY, "mytable/#", TABLE_ID);
/**
* 下面会用到辅助类ContentUris 的两个实用方法
* withAppendedId(uri, id)用于为路径加上ID部分
* parseId(uri)方法用于从路径中获取ID部分
*/
};
@Override
public int delete(Uri uri, String arg1, String[] arg2) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String rowId = uri.getPathSegments().get(1);
return db.delete(TABLE_NAME, Mytable.MyColumns._ID + "=" + rowId, null);
}
@Override
public String getType(Uri uri) {
switch (sUriMatcher.match(uri)) {
case TABLES:
return Mytable.MyColumns.CONTENT_TYPE;
case TABLE_ID:
return Mytable.MyColumns.CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
}
int i = 1;
@Override
public Uri insert(Uri uri, ContentValues initialValues) {
// TODO Auto-generated method stub
if (sUriMatcher.match(uri) != TABLES) {
throw new IllegalArgumentException("Unknown URI " + uri);
}
ContentValues values;
if (initialValues != null) {
values = new ContentValues(initialValues);
} else {
values = new ContentValues();
}
if (values.containsKey(Mytable.MyColumns._ID) == false) {
values.put(Mytable.MyColumns._ID, i);
i++;
}
if (values.containsKey(Mytable.MyColumns.TITLE) == false) {
values.put(Mytable.MyColumns.TITLE, "title1");
}
if (values.containsKey(Mytable.MyColumns.BODY) == false) {
values.put(Mytable.MyColumns.BODY,"body1");
}
if (values.containsKey(Mytable.MyColumns.NAME) == false) {
values.put(Mytable.MyColumns.NAME, "name1");
}
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
long rowId = db.insert(TABLE_NAME, Mytable.MyColumns.BODY, values);
if (rowId > 0) {
Uri myUri= ContentUris.withAppendedId(Mytable.MyColumns.CONTENT_URI, rowId);
return myUri;//返回值为一个uri
}
throw new SQLException("Failed to insert row into " + uri);
}
DatabaseHelper mOpenHelper ;
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
mOpenHelper = new DatabaseHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();//是一个构造SQL查询语句的辅助类
switch (sUriMatcher.match(uri)) {
case TABLES:
qb.setTables(TABLE_NAME);
break;
case TABLE_ID:
qb.setTables(TABLE_NAME);
qb.appendWhere(Mytable.MyColumns._ID + "="
+ uri.getPathSegments().get(1));
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
// String orderBy = null;
// if (TextUtils.isEmpty(sortOrder)) {
// orderBy = Mytable.MyColumns.DEFAULT_SORT_ORDER;
// } else {
// orderBy = sortOrder;
// }
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
Cursor c = qb.query(db, projection, selection, selectionArgs, null,
null, sortOrder);
return c;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String rowId = uri.getPathSegments().get(1);
return db.update(TABLE_NAME, values, Mytable.MyColumns._ID + "="
+ rowId, null);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ContentProvider测试程序
共29个文件
class:12个
java:5个
xml:3个
4星 · 超过85%的资源 需积分: 3 161 下载量 148 浏览量
2010-08-20
17:33:37
上传
评论
收藏 54KB RAR 举报
温馨提示
自定义ContentProvider的测试程序,是对于一个SQLite数据库的操作。
资源推荐
资源详情
资源评论
收起资源包目录
ProviderTest.rar (29个子文件)
ProviderTest
.project 848B
default.properties 364B
bin
hx
android
test
R$string.class 418B
Main$1.class 2KB
R$layout.class 385B
R$drawable.class 391B
Mytable$MyColumns.class 1KB
R.class 510B
Main.class 2KB
R$attr.class 331B
DatabaseHelper.class 2KB
R$id.class 539B
MyContentProvider.class 5KB
Mytable.class 360B
resources.ap_ 11KB
ProviderTest.apk 17KB
classes.dex 9KB
AndroidManifest.xml 786B
src
hx
android
test
MyContentProvider.java 4KB
Main.java 2KB
Mytable.java 1KB
DatabaseHelper.java 1KB
res
values
strings.xml 173B
layout
main.xml 1KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
icon.png 3KB
.classpath 280B
gen
hx
android
test
R.java 1006B
assets
共 29 条
- 1
葵花小子
- 粉丝: 23
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页