我正在使用ORMLite使用以下代码进行插入:
protected void registerUser(EditText fullName, EditText email, EditText mobile, EditText username, EditText password) {
//Perform DB Call to Insert Records
User user = new User();
user.setFullName(fullName.getText().toString());
user.setEmail(email.getText().toString());
user.setMobile(mobile.getText().toString());
user.setUsername(username.getText().toString());
user.setPassword(password.getText().toString());
DBManager.getInstance().addUser(user);
}
但重新启动应用程序后,上述记录丢失,我的登录失败。 我使用以下代码进行身份验证,它适用于现有记录。
public boolean login(String username, String password) {
boolean validLogin = false;
try {
QueryBuilder<User, Integer> qb = getHelper().getUserDao().queryBuilder();
qb.where().eq("username", username).and().eq("password", password);
PreparedQuery<User> pq = qb.prepare();
User user = getHelper().getUserDao().queryForFirst(pq);
if(user!=null){
validLogin = true;
}
} catch (SQLException e) {e.printStackTrace();}
return validLogin;
}
在我的助手课程中,我只在不可用时才创建表格。
TableUtils.createTableIfNotExists(connectionSource, User.class);
ORMLite如何处理提交操作?我们必须手动提交吗?请建议如果我错过了一些东西,因为我是Android和ORMLite的新手。
答案 0 :(得分:0)
在评论中提供了更多信息之后,问题似乎是通过调用dao.setAutoCommit(false)
或启动从未完成或已回滚的事务来禁用自动提交。
建议使用如下所示的try / finally模式。
try {
dao.setAutoCommit(false);
...
...
} finally {
dao.setAutoCommit(true);
dao.commit();
}