• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
_Java小菜盘
博客园    首页    新随笔    联系   管理    订阅  订阅
111
package android.api.version18.contentprovider;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.text.TextUtils;

public class MyContentProvider extends ContentProvider{

    static final String PROVIDER_NAME = "android.api.version18.contentprovider";
    static final String URL = "content://" + PROVIDER_NAME + "/students";
    static final Uri CONTENT_URI = Uri.parse(URL);
    
    static final String _ID = "_id";
    static final String NAME = "name";
    static final String GRADE = "grade";
    
    DatabaseHelper dbHelper;
    SQLiteDatabase db;
    
    
    static final int STUDENTS = 1;
    static final int STUDENT = 2;
    
    static final UriMatcher uriMatcher;
    static{
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(PROVIDER_NAME, "students", STUDENTS);
        uriMatcher.addURI(PROVIDER_NAME, "students/#", STUDENT);
    }
    
    @Override
    public boolean onCreate() {
        Context context = getContext();
        dbHelper = new DatabaseHelper(context);
        db = dbHelper.getWritableDatabase();
        
        return (dbHelper == null) ? false : true;
    }
    
    @Override
    public Uri insert(Uri uri, ContentValues values) {
        //SQLiteDatabase db = dbHelper.getWritableDatabase();
        long rowID = db.insert(DatabaseHelper.STUDENTS_TABLE_NAME, 
                        "", values);
        if(rowID > 0){
            Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
            return _uri;
        }
        return null;
    }
    
    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        //SQLiteDatabase db = dbHelper.getWritableDatabase();
        int count = 0;
        
        switch(uriMatcher.match(uri)){
        case STUDENTS:
            count = db.delete(DatabaseHelper.STUDENTS_TABLE_NAME, 
                    selection, selectionArgs);
            break;
        case STUDENT:
            String id = uri.getPathSegments().get(1);
            String where_value = _ID + " = " + id;
            if(selection != null && !"".equals(selection)){
                where_value += selection;
            }
            count = db.delete(DatabaseHelper.STUDENTS_TABLE_NAME, 
                            where_value, selectionArgs); 
            break;
        default:
            count = 0;
        }
        
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        //SQLiteDatabase db = dbHelper.getWritableDatabase();
        int count = 0;
        
        switch(uriMatcher.match(uri)){
        case STUDENTS:
            count = db.update(DatabaseHelper.STUDENTS_TABLE_NAME, 
                    values, selection, selectionArgs);
            break;
        case STUDENT:
            String id = uri.getPathSegments().get(1);
            count = db.update(DatabaseHelper.STUDENTS_TABLE_NAME, values,
                            _ID + " = " + id + (!TextUtils.isEmpty(selection) ?
                                " and (" + selection + " )" : ""), selectionArgs); 
            break;
        default:
            count = 0;
        }
        
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }
    
    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
            String sortOrder) {
        //SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = null;
        switch(uriMatcher.match(uri)){
        case STUDENTS:
            cursor = db.query(DatabaseHelper.STUDENTS_TABLE_NAME,
                    projection, selection, selectionArgs, null, null, null);
            break;
        case STUDENT:
            
            break;
        }
        
        return cursor;
    }
    
    @Override
    public String getType(Uri arg0) {
        
        return null;
    }
    
    private static class DatabaseHelper extends SQLiteOpenHelper{

        static final String DATABASE_NAME = "Xuexiao";
        static final String STUDENTS_TABLE_NAME = "students";
        static final int DATABASE_VERSION = 1;
        static String CREATE_DB_TABLE = "create table " + STUDENTS_TABLE_NAME +
                "(_id INTEGER primary key AUTOINCREMENT, " + 
                " name Text NOT null, " + "grade TEXT not null);";
        
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_DB_TABLE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
            db.execSQL("drop table if exits " + STUDENTS_TABLE_NAME);
            onCreate(db);
        }
        
    }
    
}

 

posted on 2015-07-28 10:42  _Java小菜盘  阅读(112)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3