• contentProvider模板


    package com.example.qunzheng.todolist.provider;
    
    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.database.sqlite.SQLiteQueryBuilder;
    import android.net.Uri;
    import android.text.TextUtils;
    
    /**
     * Created by QunZheng on 2015/3/9.
     */
    public class EarthquakeProvider extends ContentProvider {
        public static final Uri CONTENT_URI = Uri.parse("content://com.qunzheng.earthquakeprovider/earthquakes");
        public static final String KEY_ID = "_id";
        public static final String KEY_DATE = "date";
        public static final String KEY_DETAILS = "details";
        public static final String KEY_SUMMARY = "summary";
        public static final String KEY_LOCATION_LAT = "latitude";
        public static final String KEY_LOCATION_LNG = "longitude";
        public static final String KEY_LINK = "link";
        public static final String KEY_MAGNITUDE = "magnitude";
    
        private EarthquakeDatabaseHelper sqLiteOpenHelper = null;
    
        private static final int ALL_ROWS = 1;
        private static final int SINGLE_ROW = 2;
    
        private static UriMatcher matcher = null;
    
        static {
            matcher = new UriMatcher(UriMatcher.NO_MATCH);
            matcher.addURI("com.qunzheng.earthquakeprovider","earthquakes",ALL_ROWS);
            matcher.addURI("com.qunzheng.earthquakeprovider","earthquakes/#",SINGLE_ROW);
        }
    
        @Override
        public boolean onCreate() {
            sqLiteOpenHelper = new EarthquakeDatabaseHelper(getContext(), EarthquakeDatabaseHelper.DATABASE_NAME, null, EarthquakeDatabaseHelper.DATABASE_VERSION);
            return true;
        }
    
        @Override
        public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
            SQLiteDatabase db = sqLiteOpenHelper.getWritableDatabase();
    
            SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
            queryBuilder.setTables(EarthquakeDatabaseHelper.DATABASE_TABLE);
            switch (matcher.match(uri)) {
                case SINGLE_ROW:
                    String rowId = uri.getPathSegments().get(1);
                    queryBuilder.appendWhere(KEY_ID + "=" + rowId);
                    break;
            }
    
            String orderBy;
            if (TextUtils.isEmpty(sortOrder)) {
                orderBy = KEY_DATE;
            }else{
                orderBy = sortOrder;
            }
            return queryBuilder.query(db,projection,selection,selectionArgs,null,null,orderBy);
        }
    
        @Override
        public String getType(Uri uri) {
            switch (matcher.match(uri)) {
                case ALL_ROWS:
                    return "vnd.android.cursor.dir/vnd.qunzheng.earthquakes";
                case SINGLE_ROW:
                    return "vnd.android.cursor.item/vnd.qunzheng.earthquakes";
                default:
                    throw new IllegalArgumentException("Unsupport Uri:" + uri);
            }
        }
    
        @Override
        public Uri insert(Uri uri, ContentValues values) {
            SQLiteDatabase db = sqLiteOpenHelper.getWritableDatabase();
    
            long id = db.insert(EarthquakeDatabaseHelper.DATABASE_TABLE, null, values);
    
            //数据插入成功
            if (id > -1) {
                Uri resultUri = ContentUris.withAppendedId(CONTENT_URI, id);
    
                getContext().getContentResolver().notifyChange(resultUri, null);
                return resultUri;
            }else{
    
            }
            return null;
        }
    
        @Override
        public int delete(Uri uri, String selection, String[] selectionArgs) {
            SQLiteDatabase db = sqLiteOpenHelper.getWritableDatabase();
    
            switch (matcher.match(uri)) {
                case SINGLE_ROW:
                    String id = uri.getPathSegments().get(1);
                    selection = KEY_ID + "=" + id +
                            (TextUtils.isEmpty(selection) ? "" : (" and ("+ selection +")"));
                    break;
            }
    
            if (selection == null) {
                selection = "1";
            }
    
            int resultRows = db.delete(EarthquakeDatabaseHelper.DATABASE_TABLE, selection, selectionArgs);
    
            getContext().getContentResolver().notifyChange(uri, null);
            return resultRows;
        }
    
        @Override
        public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
            SQLiteDatabase db = sqLiteOpenHelper.getReadableDatabase();
    
            switch (matcher.match(uri)) {
                case SINGLE_ROW:
                    String id = uri.getPathSegments().get(1);
                    selection = KEY_ID + "=" + id +
                            (TextUtils.isEmpty(selection) ? "" : (" and ("+ selection +")"));
                    break;
            }
    
            int resultRows = db.update(EarthquakeDatabaseHelper.DATABASE_TABLE, values, selection, selectionArgs);
            getContext().getContentResolver().notifyChange(uri, null);
            return resultRows;
        }
    
        private static class EarthquakeDatabaseHelper extends SQLiteOpenHelper{
    
            public static final String DATABASE_NAME = "earthquake.db";
            public static final int DATABASE_VERSION = 1;
            public static final String DATABASE_TABLE = "earthQuake";
    
            private static final String TABLE_CREATE = "create table " +
                    DATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " +
                    KEY_DATE + " INTEGER, " +
                    KEY_LINK + " text, " +
                    KEY_LOCATION_LAT + " FLOAT, " +
                    KEY_LOCATION_LNG + " FLOAT, " +
                    KEY_SUMMARY + " TEXT, " +
                    KEY_MAGNITUDE + " FLOAT, " +
                    KEY_DETAILS + " text)";
    
    
    
            public EarthquakeDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
                super(context, name, factory, version);
            }
    
            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL(TABLE_CREATE);
            }
    
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            }
        }
    }
    

      

  • 相关阅读:
    学用MVC4做网站六后台管理:6.1.3管理员修改密码
    学用MVC4做网站六后台管理:6.1.1管理员登录、6.1.2退出
    学用MVC4做网站六后台管理:6.1管理员(续)
    学用MVC4做网站六:后台管理(续)
    SiteCore Experience Analytics-路径分析地图
    sitecore教程路径分析器
    SiteCore Experience Analytics-体验分析
    sitecore系列教程之更改您的个人设置
    sitecore中的两种编辑工具介绍
    Sitecore CMS中如何管理默认字段值
  • 原文地址:https://www.cnblogs.com/zhengqun/p/4358021.html
Copyright © 2020-2023  润新知