上一篇文章,我们说到了自定义一个内容提供商,那么这一次,我们从客户端的角度来访问服务端的数据,并且进行操作(查、增、删、改)
//首先,自定义一个操作数据库的工具类
<pre name="code" class="java">/**
* 客户端
* 访问服务端的数据库,并且可以进行增、删、改、查的操作
* 数据库就在这里...............
*/
public class MainActivity extends Activity {
private String url="content://com.mma/student/";//uri
private EditText e1,e2;//编辑框
private ContentResolver resolver;//客户端
private ListView listview;//视图列表
private SimpleCursorAdapter adapter;//适配器(数据库)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText) findViewById(R.id.e1);
e2=(EditText) findViewById(R.id.e2);
listview=(ListView) findViewById(R.id.listview);
resolver=getContentResolver();//创建客户端
}
public void mm1(View view){//添加
String name=e1.getText().toString();
int age=0;
try {
String s=e2.getText().toString();
age=Integer.parseInt(s);
} catch (Exception e) {
}
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age",age);
Uri uri = resolver.insert(Uri.parse(url), values);
long id=ContentUris.parseId(uri);
if(id>0){
Toast.makeText(MainActivity.this, "添加成功....", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "添加失败....", Toast.LENGTH_LONG).show();
}
}
public void mm2(View view){//修改
String name=e1.getText().toString();
int age=0;
try {//加一个异常判断
String s=e2.getText().toString();
age=Integer.parseInt(s);
} catch (Exception e) {
}
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age",age);
int i=resolver.update(Uri.parse(url),
values,"name=?",new String[]{name});
if(i>0){
Toast.makeText(MainActivity.this, "修改成功....", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "修改失败....", Toast.LENGTH_LONG).show();
}
}
public void mm3(View view){//查询(如果数据量比较大,需要考虑把查询数据库放到子线程里面去执行!)
Cursor cursor=resolver.query(Uri.parse(url),
null, null, null,null);
adapter=new SimpleCursorAdapter(MainActivity.this,//创建适配器(数据库)
android.R.layout.simple_list_item_2,// 布局
cursor, //数据库的游标
new String[]{"name","age"}, //数据库对应的字段字符串数组
new int[]{android.R.id.text1,android.R.id.text2},//布局里面的控件id数组
0);
listview.setAdapter(adapter);//在界面显示
}
public void mm4(View view){//删除
String name=e1.getText().toString();
int i=resolver.delete(Uri.parse(url),
"name=?",
new String[]{name});
if(i>0){
Toast.makeText(MainActivity.this, "删除成功....", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "删除失败....", Toast.LENGTH_LONG).show();
}
}
这里,主要是上的源码,没有什么注释,有时间时,我会把这些都加上,大家也可以拷贝到电脑上跑一下,可能少了一两个括号,自己加上吧!