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