package com.android.database;
import android.R.integer;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.util.Log;
/**
*
*
* 项目名称:allTest
* 类名称:MyFirstContentProvider
* 类描述:
* 创建人:fht
* 创建时间:Apr 13, 2015 9:15:31 PM
* 修改人:fht
* 修改时间:Apr 13, 2015 9:15:31 PM
* 修改备注:
* @version
*
*/
public class AllMediaContentProvider extends ContentProvider {
//定义一个URI的匹配器,用于匹配uri,如果路径不满足条件返回-1
private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int INSERT = 1;
private static final int DELETE = 2;
private static final int UPDATE = 3;
private static final int QUERY = 4;
private static final int QUERYONE = 5;
private MyHelper myHelper = null;
//content://com.feng.database.firstprovider/insert 添加
//content://com.feng.database.firstprovider/delete 删除
//content://com.feng.database.firstprovider/update 更新
//content://com.feng.database.firstprovider/query 查询
static {
matcher.addURI("com.feng.database.firstprovider", "insert", INSERT);
matcher.addURI("com.feng.database.firstprovider", "delete", DELETE);
matcher.addURI("com.feng.database.firstprovider", "update", UPDATE);
matcher.addURI("com.feng.database.firstprovider", "query", QUERY);
matcher.addURI("com.feng.database.firstprovider", "query/#", QUERYONE);//任意
}
@Override
public boolean onCreate() {
Log.i("fenghaitao", "first contentprovider ...");
myHelper = new MyHelper(getContext(),DBInfo.DB.DB_NAME,null,DBInfo.DB.DB_VERSION);
return (myHelper == null)?false:true;
}
/*
* 添加数据
* @see android.content.ContentProvider#insert(android.net.Uri, android.content.ContentValues)
*/
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
try {
if(matcher.match(uri)==INSERT){
Log.i("fenghaitao", "insert");
SQLiteDatabase db = myHelper.getWritableDatabase();
db.insert(DBInfo.Table.TABLE_NAME, null, values);
db.close();
}else{
throw new IllegalArgumentException("path error,do not insert data");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/*
* 删除数据
* @see android.content.ContentProvider#delete(android.net.Uri, java.lang.String, java.lang.String[])
*/
@Override
public int delete(Uri uri, String selection, String[] selectionStrings) {
// TODO Auto-generated method stub
int result = 0;
try {
if(matcher.match(uri)==DELETE){
SQLiteDatabase db = myHelper.getWritableDatabase();
result = db.delete(DBInfo.Table.TABLE_NAME, selection, selectionStrings);
}else{
throw new IllegalArgumentException("path error , do not delete data");
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/*
* 更新数据
* @see android.content.ContentProvider#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[])
*/
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
int result = 0;
try {
if(matcher.match(uri)==UPDATE){
SQLiteDatabase db = myHelper.getWritableDatabase();
result = db.update(DBInfo.Table.TABLE_NAME, values, selection, selectionArgs);
}else{
throw new IllegalArgumentException("path error , do not update data");
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/*
* 查询数据
*
*/
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
// TODO Auto-generated method stub
Cursor cursor = null;
try {
if(matcher.match(uri)==QUERY){
Log.i("fenghaitao", "query");
SQLiteDatabase db = myHelper.getReadableDatabase();
cursor = db.query(DBInfo.Table.TABLE_NAME, projection, selection, selectionArgs, null, null, null);
Log.i("fenghaitao", "cursor"+cursor.getCount());
}else if (matcher.match(uri)==QUERYONE){
Log.i("fenghaitao", "queryone");
SQLiteDatabase db = myHelper.getReadableDatabase();
long id = ContentUris.parseId(uri);
cursor = db.query(DBInfo.Table.TABLE_NAME, projection, "_id=?", new String[]{id+""}, null, null, null);
}else {
throw new IllegalAccessException("path error , do not query data");
}
} catch (Exception e) {
e.printStackTrace();
}
return cursor;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
if(matcher.match(uri) == QUERY){
return "com.feng.database.firstprovider";
}
return null;
}
}