android的与ContentResolver(内容访问者)对ContentProvider(内容提供者)的增删查改
2017-02-06 22:56
501 查看
这个是底层写法
1、定义类继承ContentProvider根据需要重写内部方法 可以参考 我的代码如下:
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:内容提供者(ContentProvider)和内容访问者(ContentResolver)
- Android 中ContentProvider内容提供者和ContentResolver内容访问者
- Android ContentProvider(内容提供者 )+ContentResolver(内容访问者)
- Android----ContentProvider(内容提供者) ContentResolver(内容访问者)
- ContentProvider内容提供者与ContentResolver内容访问者(二)
- ContentProvider内容提供者和ContentResolver内容访问者
- Android中内容提供者ContentProvider实现数据库增删改查
- ContentProvider内容提供者与ContentResolver内容访问者
- ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider内容提供者与ContentResolver内容访问者
- 给大家简述下ContentProvider(内容提供者)与ContentResolver(内容访问者)如何使用。
- Android ContentProvinder(内容提供者) ContentResolver(内容访问者)的简单应用
- ContentProvider内容提供者与ContentResolver内容访问者
- 使用内容提供者ContentProvider与内容访问者ContentResolver实现拿到另外一个项目的数据库数据
- 关于Android sqlite3数据库创建使用内容提供者contentProvider及解析者ContentResolver,观察者ContentResolver案例
- Android ContentProvider(内容提供者{模拟底层})和Contentresolver(内容接受者{实现对ContentProvider数据的修改})
- ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider(内容提供者)与ContentResolver(内容访问者)
- Android ContentProvider(内容提供者)
- Android内容提供者(ContentProvider)浅析(三)