2012-07-01 57 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