一 前 言
后端云支持对上传的数据可以实现增删查改,即增加、删除、查询、修改。而在这四个操作里面,是通过唯一的 关键值来对应其数据,这个在创建数据时候从后端云唯一穿过的一个类似乱码的值,属于String类型。我们只需要根据这个关键值去操作数据。
二 布局
实现增查改的按钮即可 ~~
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:scrollbars="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_name"
android:gravity="center"
android:hint="输入名字"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/et_number"
android:gravity="center"
android:hint="输入学号"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/et_score"
android:gravity="center"
android:hint="输入成绩"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:onClick="btn_card"
android:text="记录"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_equry"
android:text="查询"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_updata"
android:text="修改"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_delete"
android:text="删除"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
效果图如下:
二 代码实现:增加操作
①创建实体类 Student.java,继承 BmobObject,定义个人的参数,对应云端。成功会在云端创建student表。
package com.example.xuhong.bmobsample_master;
import cn.bmob.v3.BmobObject;
/*
* 项目名: BmobSample-master
* 包名: com.example.xuhong.bmobsample_master
* 文件名: Student
* 创建者: XuHong
* 创建时间: 2017/1/15 18:51
* 描述: 个人实体类
*/
public class Student extends BmobObject {
//名字
private String name;
//学号
private String number;
//分数
private int score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
主类实现。
在manifest.xml声明权限
<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--获取sd卡写的权限,用于文件上传和下载-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许读取手机状态 用于创建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
初始化布局 initView()
初始化SDK,在oncreat方法实现(由于是在自动导入的 ,所以不需要自己导入jar)
写入云端成功监听
如果可以成功写入云端,则会在savelistene监听方法中返回唯一的 ID值,此值是我们操作某条数据的关键
package com.example.xuhong.bmobsample_master;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;
public class MainActivity extends AppCompatActivity {
private EditText et_name,et_number,et_score;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化SDk,第二个参数是在自己创建云端给予的唯一的 ApplicationID
Bmob.initialize(this, "600fdbfe776869fafc740b4a894e3888");
//初始化View
initView();
}
private void initView() {
et_name= (EditText) findViewById(R.id.et_name);
et_number= (EditText) findViewById(R.id.et_number);
et_score= (EditText) findViewById(R.id.et_score);
}
public void btn_card(View v){
//获取内容
String name =et_name.getText().toString();
String number =et_number.getText().toString();
String score =et_score.getText().toString();
//判断为空?
if (!name.isEmpty()&&!number.isEmpty()&&!score.isEmpty()){
Toast.makeText(MainActivity.this,"某项输入不能为空!",Toast.LENGTH_LONG).show();
}else {
//绑定数据,并且通过save方法上传到云端
Student student =new Student();
student.setName(name);
student.setNumber(number);
student.setScore(Integer.parseInt(score));
//savrlistener监听是否上传成功
student.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
//判断异常指数e是否为空,否则返回唯一ID
if(e==null){
Toast.makeText(MainActivity.this,"记录成功:ID为"+s,Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"失败!"+e,Toast.LENGTH_LONG).show();
}
}
});
}
}
}
看看效果可以返回ID值了哦!
我们再看看云端的数据~成功了哦~
三 代码实现:查询操作
我们需要在其对应的ID来操作。
BmobQuery<Student> student=new BmobQuery<>();
//参数实在表中的id唯一值,对应云端
student.getObject("7a41ff5591", new QueryListener<Student>() {
@Override
public void done(Student student, BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"查询成功:创建时间为:"+student.getCreatedAt()
+",更新时间为:"+student.getUpdatedAt()
+",名字:"+student.getName()
+",分数:"+student.getScore()
+",学号:"+student.getNumber()
+",所在的表名:"+student.getTableName(),Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"失败!"+e,Toast.LENGTH_LONG).show();
}
}
});
效果图:
四 代码实现:更新操作
Student student = new Student();
//修改之后的分数
student.setScore(90);
//参数实在表中的id唯一值,对应云端
student.update("7a41ff5591", new UpdateListener() {
@Override
public void done(BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"成功!",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"失败!"+e,Toast.LENGTH_LONG).show();
}
}
});
点击之后我们看看云端的效果
五 代码实现:删除操作
Student student = new Student();
//参数实在表中的id唯一值,对应云端
student.delete("7a41ff5591", new UpdateListener() {
@Override
public void done(BmobException e) {
if(e==null){
Toast.makeText(MainActivity.this,"成功!",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"失败!"+e,Toast.LENGTH_LONG).show();
}
}
});
}
那行数据不存在了~