文章标题android 的ContentProvider内容提供者

首先,第一步在AndroidManifest.xml配置

 <!--内容提供者   name写的是类的名字
         android:exported="true" 开启访问
        -->
        <provider
            android:authorities="com.zking.g150831_android16_sqlite.person"
            android:name="com.zking.provider.MyProvider"
            android:exported="true"
            ></provider>

在第二步:在java代码中extends ContentProvider,有6个方法,可以进行数据的整。删,改,查,在数据库中进行查询

public class MyProvider extends ContentProvider {

    private SQLiteDatabase sqLiteDatabase;
    private UriMatcher uriMatcher;


    private static final int PERSONS=1;
    private static final int PERSON=2;
    @Override
    public boolean onCreate() {
        DbHelper dbHelper=new DbHelper(getContext(),"G150831.db",null,2);
        sqLiteDatabase = dbHelper.getReadableDatabase();


        //实例化URI匹配器
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        //添加匹配规则

        //      content://com.zking.g150831_android16_sqlite.data/datas代表查询所有
        //      content://com.zking.g150831_android16_sqlite.data/datas/1代表查询单个

        uriMatcher.addURI("com.zking.g150831_android16_sqlite.person","persons",MyProvider.PERSONS);
        uriMatcher.addURI("com.zking.g150831_android16_sqlite.person","persons/#",MyProvider.PERSON);

        Log.i("text","onCreate");
        return false;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
        //查询所有的数据
        Log.i("text","query");
         int code=uriMatcher.match(uri);
        switch (code) {
            case MyProvider.PERSONS:
                Log.i("text","query查询所有");
                return sqLiteDatabase.query(true,"person",strings,s,strings1,null,null,s1,null);
            case MyProvider.PERSON:
                Log.i("text","query查询单个");
                //获取#好的值
               long id= ContentUris.parseId(uri);
                return  sqLiteDatabase.rawQuery("select * from person where _id=?",new String[]{id+""});
        }
            return null;
    }

    @Nullable
    @Override
    public String getType(Uri uri) {
        Log.i("text","getType");
        return null;
    }

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues contentValues) {
        Log.i("text","insert");
        return null;
    }

    @Override
    public int delete(Uri uri, String s, String[] strings) {
        Log.i("text","delete");
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
        Log.i("text","update");
        return 0;
    }
}

在第三步:在java代码中,在数据库中可以查询数据

public class MainActivity extends ListActivity {

    private EditText et_main_id;
    private EditText et_main_name;
    private EditText et_main_age;
    private SQLiteDatabase database;
    private ListView listview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_main_id = (EditText) findViewById(R.id.et_main_id);
        et_main_name = (EditText) findViewById(R.id.et_main_name);
        et_main_age = (EditText) findViewById(R.id.et_main_age);
        listview = getListView();

        //GO
        //Java
        //php
        DbHelper dbHelper=new DbHelper(this,"G150831.db",null,2);
        database = dbHelper.getReadableDatabase();
        //Hibernate  session


        //查询数据
        //cursor  游标
       Cursor cursor=database.query(false,"person",null,null,null,null,null,null,"2,2");
        //List<Person>
        //循环游标,---。List<Map<Styring,?>>
        //BaseAdapter  SimpleAdater
        SimpleCursorAdapter simpleCursorAdapter=new SimpleCursorAdapter(this,R.layout.item_listview,cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
        listview.setAdapter(simpleCursorAdapter);
//        database.rawQuery()
    }

    public void save(View view){
        String name=et_main_name.getText().toString();
        String age=et_main_age.getText().toString();

        //存到数据库
//        ContentValues values=new ContentValues();//Map
//        values.put("name",name);
//        values.put("age",age);
//        values.putNull("_id");
//        database.insert("person","name",values);

        //HQL QBC 纯(原)
        for (int i = 0; i <100 ; i++) {
            database.execSQL("insert into person values(null,?,?)",new String[]{name+i,age});
        }
        Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值