2012-07-01 28 views
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; 
} 

在我的助手类中,我只在不可用时才创建表。

TableUtils.createTableIfNotExists(connectionSource, User.class); 

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

+0

有关更多信息,我正在使用Android数据库。 – user1409240

+0

你可以显示“addUser(...)”方法吗?这就是数据库操作。 – Gray

+0

这是ADDUSER()\t \t 公共无效ADDUSER(用户用户){ \t \t尝试{ \t \t \t getHelper()方法getUserDao()创建(用户)的代码。。 (SQLException){ \t \t} catch(SQLException e){ \t \t \t e.printStackTrace(); \t \t} \t} – user1409240

回答

0

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

建议使用类似下面的try/finally模式。

try { 
    dao.setAutoCommit(false); 
    ... 
    ... 
} finally { 
    dao.setAutoCommit(true); 
    dao.commit(); 
} 
+0

感谢您的建议。对延迟响应抱歉,已经有一段时间了。 – user1409240