Leancloud-数据存储功能入门

来源:互联网 发布:python躲避子弹的游戏 编辑:程序博客网 时间:2024/05/16 05:28

最近在做一个简单的手机工作计划程序,其中的数据部分使用了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) {                    //逻辑处理                }            });        }    }
0 0
原创粉丝点击