package com.example.slidingmenu.yujing.client.contentprovider; 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 com.example.slidingmenu.yujing.client.database.DatabaseHelper; import com.example.slidingmenu.yujing.client.database.table.Friend; import com.example.slidingmenu.yujing.client.database.table.PrivateLetter; import com.example.slidingmenu.yujing.client.database.table.Topic; public class DataProvider extends ContentProvider{ private DatabaseHelper dbHelper; // 定义UriMatcher类 private static final UriMatcher uriMatcher; private static final int topic = 1; private static final int privateLetter = 2; private static final int friend = 3; public static String AUTHORITY = "com.androidbook.client.contentprovider.DataProvider"; //标识URI,定义不同的Uri来区别对不同表的操作 public static final Uri Topic_CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/Topic"); public static final Uri PrivateLetter_CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/PrivateLetter"); public static final Uri Friend_CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/Friend"); static { // 当没有匹配成功是时,返回NO_MATCH的值 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); // 匹配Topic表的Uri,匹配成功后返回topic整数值 uriMatcher.addURI(AUTHORITY, "Topic", topic); // 匹配PrivateLetter表的Uri,匹配成功后返回privateLetter整数值 uriMatcher.addURI(AUTHORITY, "PrivateLetter", privateLetter); // 匹配Friend表的Uri,匹配成功后返回privateLetter整数值 uriMatcher.addURI(AUTHORITY, "Friend", friend); } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { SQLiteDatabase db = this.dbHelper.getWritableDatabase(); int row = 0; Uri newuri = ContentUris.withAppendedId(uri, 3); long id = ContentUris.parseId(newuri); switch (uriMatcher.match(uri)) { case topic: row = db.delete(Topic.tableName, selection, selectionArgs); break; case privateLetter: row = db.delete(PrivateLetter.tableName, selection, selectionArgs); break; case friend: row = db.delete(Friend.tableName, selection, selectionArgs); break; } return row; } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = this.dbHelper.getWritableDatabase(); switch (uriMatcher.match(uri)) { case topic: db.insert(Topic.tableName, null, values); break; case privateLetter: db.insert(PrivateLetter.tableName, null, values); break; case friend: db.insert(Friend.tableName, null, values); break; } return null; } @Override public boolean onCreate() { this.dbHelper = new DatabaseHelper(this.getContext(), "client.db", null, 1); return true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor cursor = null; SQLiteDatabase db = this.dbHelper.getReadableDatabase(); switch (uriMatcher.match(uri)) { case topic: cursor = db.query( Topic.tableName, projection, selection, selectionArgs, null, null, sortOrder); cursor.moveToFirst(); break; case privateLetter: cursor = db.query( PrivateLetter.tableName, projection, selection, selectionArgs, null, null, sortOrder); cursor.moveToFirst(); break; case friend: cursor = db.query( Friend.tableName, projection, selection, selectionArgs, null, null, sortOrder); cursor.moveToFirst(); System.out.print("cursor----->"); System.out.println(cursor==null); break; } return cursor; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { SQLiteDatabase db = this.dbHelper.getWritableDatabase(); int row = 0; switch (uriMatcher.match(uri)) { case topic: row = db.update(Topic.tableName, values, selection, selectionArgs); break; case privateLetter: row = db.update(PrivateLetter.tableName, values, selection, selectionArgs); break; case friend: row = db.update(Friend.tableName, values, selection, selectionArgs); break; } return row; } }