Leancloud-数据存储功能入门

最近在做一个简单的手机工作计划程序,其中的数据部分使用了Leancloud提供的数据存储功能。整理下其中的一些代码,同大家分享一下。

AVObject

增加一条记录

部分代码如下所示:



    private static final String TABLENAME = "Project";
    //新建一条记录,数据库表名为Project
    public static void createProject(String name) {
        final AVObject object = new AVObject(TABLENAME);
        object.put("name", name);
        object.put("createdate", new Date().getTime());
        object.put("createaccount", user.getUsername());
        object.put("createname", user.getString("name"));
        object.put("membernum", 0);
        object.put("tasknum", 0);
        object.put("state", 1);
        SaveCallback callback = new SaveCallback() {
            @Override
            public void done(AVException e) {
                postInfo(object, e);
            }
        };
        saveProject(object, callback);
    }
  • 该条记录会出现在Project表中
  • SaveCallback 为保存成功之后的异步回调, 当done(AVException e) 中的e为null时,表示保存成功

查询一条记录

    /***
     * 根据id查询记录
     */
    private static void getProject(String id, GetCallback callback) {
        AVQuery<AVObject> query = new AVQuery<AVObject>(TABLENAME);
        query.getInBackground(id, callback);
    }
  • GetCallback 为查询成功后的异步回调,需要实现的方法为done(AVObject avObject, AVException e)

查询多条记录

     /***
     * 得到多条记录,按照创建时间排序
     */
    public static void getAllProject() {
        AVQuery<AVObject> query = new AVQuery<>(TABLENAME);
        query.orderByDescending("createAt");
        query.findInBackground(new FindCallback<AVObject>() {
            @Override
            public void done(List<AVObject> list, AVException e) {
                postInfoList(list, e);
            }
        });
    }
  • FindCallback为查询成功后的异步回调,需要实现的方法为done(List< AVObject > list, AVException e)

修改单条记录

    public static void addTasknum(String id) {
        GetCallback getCallback = new GetCallback<AVObject>() {
            @Override
            public void done(final AVObject avObject, AVException e) {
                if (e == null) {
                    avObject.put("tasknum", avObject.getInt("tasknum") + 1);
                    SaveCallback saveCallback = new SaveCallback() {
                        @Override
                        public void done(AVException e) {
                            if (e != null) {
                                  //异常处理
                            }
                        }
                    };
                //更新后获取最新值
                avObject.setFetchWhenSave(true);
                avObject.saveInBackground(saveCallback);
                } else {
                    //异常处理
                }
            }
        };
        getProject(id, getCallback);
    }
  • 先根据id查询得到单条记录对象
  • 更新该对象的某个数值,随后保存,SaveCallback 为保存成功之后的异步回调
  • avObject.setFetchWhenSave(true);表示当更新成功后,avObject的各个字段为最新值

AVUser

除了普通对象AVObject以外,还提供了AVUser对象,用以实现简单的用户系统,额外的功能如下所示

注册

    /***
     * 创建一个用户账户
     */
    public static void createUser(final String account, final String password, String Email, String name) {
        final AVUser user = new AVUser();
        user.setUsername(account);
        user.setPassword(password);
        user.setEmail(Email);
        user.put("name", name);
        user.signUpInBackground(new SignUpCallback() {
            public void done(AVException e) {
                //逻辑处理
            }
        });
    }
  • AVUser支持的信息除了自定义的字段外,还有Username(帐号)、Password(密码)和Email(邮箱)
  • SignUpCallback为注册成功之后的异步回调操作

登录

  /***
     * 登录
     */
    public static void Login(String account, String password) {
        AVUser.logInInBackground(account, password, new LogInCallback<AVUser>() {
            @Override
            public void done(AVUser user, AVException e) {
                //逻辑处理
            }
        });
    }
  • LogInCallback为登录成功的异步回调
  • account、password分别对应用户的帐号和密码

得到当前登录的用户对象

     /***
     * 得到当前用户
     *
     * @return 当前用户
     */
    public static AVUser getCurrentUser() {
        AVUser currentUser = AVUser.getCurrentUser();
        return currentUser;
    }

注销

 public static void logOut() {
        AVUser.logOut();
 }

修改密码

/***
     * 修改密码
     */
    public static void changePwd(String old_password, String new_password) {
        AVUser user = getCurrentUser();
        if (user != null) {
            user.updatePasswordInBackground(old_password, new_password, new UpdatePasswordCallback() {
                @Override
                public void done(AVException e) {
                    //逻辑处理
                }
            });
        }
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

文章来自:http://blog.csdn.net/duanymin/article/details/47022633
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3