2012-03-06 36 views
0

我已經創建了一個數據庫。並打開它:Android數據庫更新記錄不工作?

public SQLiteDatabase open() { 
String path = "/data/data/com.develop.assetcapture/databases/Asset_Directory"; 
db = SQLiteDatabase.openOrCreateDatabase(path, null); 
return db; 
} 

我正在寫一個用戶註冊以及什麼使他們能夠重置他們的密碼。 我沒有問題插入新記錄或查詢數據庫。但是在我的resetPassword(username,password)方法我得到一個錯誤信息:

android.database.sqlite.DatabaseObjectNotClosedException: 
Application did not close the cursor or database object that was opened here 

請幫幫忙,我一直停留在這個時間太長了。

+0

看到這個http://stackoverflow.com/questions/4734886/how-can-one-avoid-databaseobjectnotclosedexception – asktomsk 2012-03-06 12:43:49

+0

你需要前檢查在嘗試打開數據庫時使用'db.isOpen()'打開數據庫......如果已經打開使用該數據庫......但更好的方法是在查詢數據後關閉db.close()'.. – MKJParekh 2012-03-06 12:47:35

+0

public int checkUser(String CheckUserame){ \t \t SQLiteStatement query = db.compileStatement(「SELECT count(*)FROM users WHERE username ='」+ CheckUserame +「'」); \t \t return(int)query.simpleQueryForLong(); \t} ...換句話說,我應該在哪裏把哈瓦關在這裏? – Michelle1109Andriod 2012-03-06 12:50:43

回答

0

當您查詢數據庫時,通常會收到一個Cursor對象。下面是一個示例:

public Cursor querySomething() { 
      final String whereClause = ... 
      final String[] params = ... 
    final Cursor c = this.getReadableDatabase().query(
      Table.TABLE_NAME, 
      Table.allColumnNames(), 
      whereClause, 
      params, // parameters for where clause 
      null, // group 
      null, // having 
      null); // order 
    return c; 
} 

使用遊標c可以訪問答案中的行。當你處理完答案,你必須關閉遊標對象:

c.close();