最近在做一个简单的手机工作计划程序,其中的数据部分使用了Leancloud提供的数据存储功能。整理下其中的一些代码,同大家分享一下。
部分代码如下所示:
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);
}
/***
* 根据id查询记录
*/
private static void getProject(String id, GetCallback callback) {
AVQuery query = new AVQuery(TABLENAME);
query.getInBackground(id, callback);
}
/***
* 得到多条记录,按照创建时间排序
*/
public static void getAllProject() {
AVQuery query = new AVQuery<>(TABLENAME);
query.orderByDescending("createAt");
query.findInBackground(new FindCallback() {
@Override
public void done(List list, AVException e) {
postInfoList(list, e);
}
});
}
public static void addTasknum(String id) {
GetCallback getCallback = new GetCallback() {
@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);
}
除了普通对象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) {
//逻辑处理
}
});
}
/***
* 登录
*/
public static void Login(String account, String password) {
AVUser.logInInBackground(account, password, new LogInCallback() {
@Override
public void done(AVUser user, AVException e) {
//逻辑处理
}
});
}
/***
* 得到当前用户
*
* @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) {
//逻辑处理
}
});
}
}