/**
* @Title: MusicContentProvider.java
* @Package com.vanzo.datebase
* @Description: TODO(用一句话描述该文件做什么)
* @author A18ccms A18ccms_gmail_com
* @date Nov 9, 2015 10:14:58 PM
* @version V1.0
*/
package com.android.database;
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;
import com.android.entity.Constant;
public class MusicContentProvider extends ContentProvider {
private String TAG = Constant.TAG;
//定义一个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.vanzo.database.musicprovider", "insert", INSERT);
matcher.addURI("com.vanzo.database.musicprovider", "delete", DELETE);
matcher.addURI("com.vanzo.database.musicprovider", "update", UPDATE);
matcher.addURI("com.vanzo.database.musicprovider", "query", QUERY);
matcher.addURI("com.vanzo.database.musicprovider", "query/#", QUERYONE);//任意
}
@Override
public boolean onCreate() {
Log.i(TAG, " music 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(TAG, "insert");
SQLiteDatabase db = myHelper.getWritableDatabase();
db.insert(DBInfo.Table.TABLE_MUSIC_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_MUSIC_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_MUSIC_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(TAG, "query");
SQLiteDatabase db = myHelper.getReadableDatabase();
cursor = db.query(DBInfo.Table.TABLE_MUSIC_NAME, projection, selection, selectionArgs, null, null, null);
Log.i(TAG, "cursor"+cursor.getCount());
}else if (matcher.match(uri)==QUERYONE){
Log.i(TAG, "queryone");
SQLiteDatabase db = myHelper.getReadableDatabase();
long id = ContentUris.parseId(uri);
cursor = db.query(DBInfo.Table.TABLE_MUSIC_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;
}
}