android--四大组件之ContentProvider的使用方法

使用方法:

1.创建一个数据库,继承SQLiteOpenHelper

2.新建一个MyProvider继承ContentProvider,并重写方法

3.实现MyProvider里面的增删改查方法

4.在主activity里面调用数据库的增删改查方法

一.创建一个数据库,继承SQLiteOpenHelper

public class MyDatebaseopenHelper extends SQLiteOpenHelper{
    /*
    * name :数据库名称
    * factory :游标工厂
    * version :版本号
    * */

    public MyDatebaseopenHelper(Context context) {
        super(context, "infoss", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据库
        String sql ="create table infoss(_id integer primary key autoincrement,name varchar(20),phone varchar(20));";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //更新数据库
    }
}

二:新建一个MyProvider继承ContentProvider,并重写方法

三.实现MyProvider里面的增删改查方法

public class contentProviders extends ContentProvider{
    MyDatebaseopenHelper helper;
    private static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
    private static final int INSERTSCUESS = 0;
    private static final int DELETESCUESS = 1;
    private static final int QUERYSCUESS = 2;
    private static final int UPDATESCUESS = 3;

    static{
        matcher.addURI("COM,CCN","insert",INSERTSCUESS);
        matcher.addURI("COM,CCN","delete",DELETESCUESS);
        matcher.addURI("COM,CCN","quert",QUERYSCUESS);
        matcher.addURI("COM,CCN","update",UPDATESCUESS);
    }

    @Override
    public boolean onCreate() {
        //创建数据库
        helper = new MyDatebaseopenHelper(getContext());
        return true;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        SQLiteDatabase database = helper.getReadableDatabase();
        Cursor cursor = database.query("infoss", projection, selection, selectionArgs, sortOrder, null, null);
        return cursor;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
       if(matcher.match(uri) == INSERTSCUESS){
           SQLiteDatabase database = helper.getWritableDatabase();
           long insert = database.insert("infoss", null, values);
           Uri uri1 = Uri.parse("content://lalala"+insert);
           return uri1;
       }else{
           throw new IllegalArgumentException("insert:uri不匹配");
       }
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        if(matcher.match(uri) == DELETESCUESS){
            SQLiteDatabase database = helper.getWritableDatabase();
            int delete = database.delete("infoss", selection, selectionArgs);
            return delete;
        }else{
            throw new IllegalArgumentException("delete:uri不匹配");
        }
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        if(matcher.match(uri) == DELETESCUESS){
            SQLiteDatabase database = helper.getWritableDatabase();
            int update = database.update("infoss", values, selection, selectionArgs);
            return update;
        }else{
            throw new IllegalArgumentException("delete:uri不匹配");
        }
    }
}

四:在主activity里面调用数据库的增删改查方法

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    MyDatebaseopenHelper helper = new MyDatebaseopenHelper(MainActivity.this);
    private EditText user_name;
    private EditText user_phone;
    private Button insert;
    private Button delete;
    private Button update;
    private Button query;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

    }

    private void initView() {
        user_name = (EditText) findViewById(R.id.user_name);
        user_phone = (EditText) findViewById(R.id.user_phone);
        insert = (Button) findViewById(R.id.insert);
        delete = (Button) findViewById(R.id.delete);
        update = (Button) findViewById(R.id.update);
        query = (Button) findViewById(R.id.query);
        lv = (ListView) findViewById(R.id.lv);

        insert.setOnClickListener(this);
        delete.setOnClickListener(this);
        update.setOnClickListener(this);
        query.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.insert:
                SQLiteDatabase database = helper.getWritableDatabase();
                ContentValues values = new ContentValues();
                String name = user_name.getText().toString();
                String phone = user_phone.getText().toString();
                values.put("name",name);
                values.put("phone",phone);
                long insert = database.insert("infoss", null, values);
                if(insert>0){
                    Log.i("insert","插入成功!!");
                }else{
                    Log.i("insert","插入失败!");
                }
                break;
            case R.id.delete:
                String name1 = user_name.getText().toString();
                SQLiteDatabase database1 = helper.getWritableDatabase();
                int delete = database1.delete("infoss", "name=?", new String[]{name1});
                if(delete>0){
                    Log.i("delete","删除成功!");
                }else{
                    Log.i("delete","删除失败!");
                }
                break;
            case R.id.update:
                SQLiteDatabase database2 = helper.getWritableDatabase();
                ContentValues values1 = new ContentValues();
                String name2 = user_name.getText().toString();
                String phone2 = user_phone.getText().toString();
                values1.put("name",name2);
                values1.put("phone",phone2);
                database2.update("infoss",values1,"name=?",new String[]{"张三"});
                break;
            case R.id.query:
                SQLiteDatabase database3 = helper.getReadableDatabase();
                Cursor cursor = database3.query("infoss", null, null, null, null, null, null);
                if(cursor!=null){
                    while(cursor.moveToNext()){
                        String name3 = cursor.getString(1);
                        String phone3 = cursor.getString(2);
                        Log.i("query",name3+"   "+phone3);
                    }
                }else{
                    Log.i("query","没有数据!");
                }
                break;
        }
    }

}

猜你喜欢

转载自blog.csdn.net/ykx_1448488568/article/details/81257988