0

我正在使用 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;
}

在我的 Helper 类中,我仅在不可用时创建表。

TableUtils.createTableIfNotExists(connectionSource, User.class);

ORMLite 如何处理提交操作?我们必须手动提交吗?请建议如果我缺少一些东西,因为我是 Android 和 ORMLite 的新手。

4

1 回答 1

0

在评论中提供了更多信息之后,问题似乎是通过调用dao.setAutoCommit(false)或启动从未完成或回滚的事务来禁用自动提交。

推荐使用如下的 try/finally 模式。

try {
   dao.setAutoCommit(false);
   ...
   ...
 } finally {
   dao.setAutoCommit(true);
   dao.commit();
 }
于 2012-07-03T17:30:51.237 回答