您的位置:首页 > 移动开发 > Android开发

android的与ContentResolver(内容访问者)对ContentProvider(内容提供者)的增删查改

2017-02-06 22:56 501 查看
这个是底层写法

1、定义类继承ContentProvider根据需要重写内部方法 可以参考 我的代码如下:

package com.example.android_sqlite;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.Nullable;

import com.zking.db.DbHherp;

/**
* Created by Administrator on 2017/2/6.
*/

public class myContentProvider extends ContentProvider {

private DbHherp dbHherp;
private SQLiteDatabase db;
@Override
public boolean onCreate() {
//实例化DbHherp
dbHherp = new DbHherp(getContext(),"person.db",null,1);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHherp.getReadableDatabase();
return false;
}

@Nullable
@Override
//查询
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
return  db.query(false,"person",strings,s,strings1,null,null,s1,null);
}

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

@Nullable
@Override
//添加
public Uri insert(Uri uri, ContentValues contentValues) { db.insert("person",null,contentValues); return null; } @Override
//删除
public int delete(Uri uri, String s, String[] strings) { db.delete("person",s,strings); return 0; } @Override
//修改
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {

db.update("person",contentValues,s,strings);
return 0;
}
}
2、注意配置文件里面的配置要配置好
<!--配置内容提供者-->
<provider
android:authorities="com.example.android_sqlite.myProvider"
android:name=".myContentProvider"
android:exported="true"
></provider>
3、现在要写内容访问者
package com.example.android_contentresolver;

import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

private EditText et_main_name;
private ContentResolver cr;
private EditText et_main_pass;
private EditText et_main_id;
private EditText et_main_myname;
private EditText et_main_mypass;
private Uri uri;
private EditText et_main_deletename;

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

et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_myname = (EditText) findViewById(R.id.et_main_myname);
et_main_mypass = (EditText) findViewById(R.id.et_main_mypass);

et_main_deletename = (EditText) findViewById(R.id.et_main_deletename);

//获取内容访问者
cr = getContentResolver();
}

public void myselect(View view){
//协议
uri = Uri.parse("content://com.example.android_sqlite.myProvider");
Cursor cursor=cr.query(uri,null,null,null,null);
while (cursor.moveToNext()){
int pid= cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
int pass= cursor.getInt(cursor.getColumnIndex("pass"));
Log.i("test",pid+""+name+""+pass);
}
}

public void myinserter(View view){
String name=et_main_name.getText().toString();
int pass=Integer.parseInt(et_main_pass.getText().toString());
//协议
uri=Uri.parse("content://com.example.android_sqlite.myProvider");
//保存到数据中
ContentValues values=new ContentValues();
values.put("name",name);
values.put("pass",pass);
values.putNull("_id");
cr.insert(uri,values);
}

public void myupdate(View view){
int myid=Integer.parseInt(et_main_id.getT
e04c
ext().toString());
String name=et_main_myname.getText().toString();
int pass=Integer.parseInt(et_main_mypass.getText().toString());
//协议
uri=Uri.parse("content://com.example.android_sqlite.myProvider");
//修改语句
ContentValues values = new ContentValues();
values.put("name", name);
values.put("pass", pass);
String whereClause = "_id=?";
String[] whereArgs = new String[] { String.valueOf(myid) };
cr.update(uri,values, whereClause, whereArgs);
}

public void mydelete(View view){
String name=et_main_deletename.getText().toString();
//协议
uri=Uri.parse("content://com.example.android_sqlite.myProvider");

cr.delete(uri,"name=?",new String[]{name});

}

}
这个是xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.android_contentresolver.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你要查询的号码"
android:id="@+id/et_main_name"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你的密码"
android:id="@+id/et_main_pass"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="查询"
android:onClick="myselect"
/>

<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="添加"
android:onClick="myinserter"
/>
</LinearLayout>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你要修改的ID"
android:id="@+id/et_main_id"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你要修改的账号"
android:id="@+id/et_main_myname"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你要修改的密码"
android:id="@+id/et_main_mypass"
/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改"
android:onClick="myupdate"
/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你要删除的账号"
android:id="@+id/et_main_deletename"
/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除"
android:onClick="mydelete"
/>

</LinearLayout>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 实例
相关文章推荐