2011-12-21 108 views
0

我無法調試。無法找到關閉數據庫的位置。無法調試

我的數據庫輔助類::

private static final String DATABASE_NAME = "aviva.db";  
     private static final int DATABASE_VERSION = 1; 
     private static final String TABLE_NAME_MY_DETAILS = "my_details"; 
     private static final String TABLE_NAME_ADDITIONAL_INFORMATION = "additional_information"; 

     OpenHelper openHelper ; 

     private Context context; 
     private SQLiteDatabase db; 

    private SQLiteStatement insertStmtMyDetails,insertStmtAdditionalInfo; 
    private static final String INSERT_MY_DETAILS = "insert into " 
     + TABLE_NAME_MY_DETAILS + "(policy_number,policy_exp_date,last_name,first_name,DOB,emergency_contact) values (?,?,?,?,?,?)"; 
    private static final String INSERT_ADDITIONAL_INFORMATION = "insert into " 
      + TABLE_NAME_ADDITIONAL_INFORMATION + "(claimant_location,loss_date,claimant_description,image1,image2) values (?,?,?,?,?)"; 

     public DataHelper(Context context) { 
     this.context = context; 
     openHelper = new OpenHelper(this.context); 
     this.db = openHelper.getWritableDatabase(); 
     this.insertStmtMyDetails = this.db.compileStatement(INSERT_MY_DETAILS); 
     this.insertStmtAdditionalInfo=this.db.compileStatement(INSERT_ADDITIONAL_INFORMATION); 
     openHelper.close(); 
    } 

    public void Close(){ 
     db.close(); 
     openHelper=null; 
    } 

     public long insertMyDetails(String policy_number,String policy_exp_date,String last_name,String first_name,String DOB,String emergency_contact) { 
     this.insertStmtMyDetails.bindString(1, policy_number); 
     this.insertStmtMyDetails.bindString(2, policy_exp_date); 
     this.insertStmtMyDetails.bindString(3, last_name); 
     this.insertStmtMyDetails.bindString(4, first_name); 
     this.insertStmtMyDetails.bindString(5, DOB); 
     this.insertStmtMyDetails.bindString(6, emergency_contact); 
     System.out.println("data inserted"); 
     return this.insertStmtMyDetails.executeInsert(); 
    } 

    public long insertAdditionalInfo(String claimant_location,String loss_date,String claimant_description,String image1,String image2){ 
      this.insertStmtAdditionalInfo.bindString(1, claimant_location); 
      this.insertStmtAdditionalInfo.bindString(2, loss_date); 
      this.insertStmtAdditionalInfo.bindString(3, claimant_description); 
      this.insertStmtAdditionalInfo.bindString(4, image1); 
      this.insertStmtAdditionalInfo.bindString(5, image2); 
      System.out.println("data inserted"); 
      return this.insertStmtAdditionalInfo.executeInsert(); 
     } 

    public void deleteAll() { 
     this.db.delete(TABLE_NAME_MY_DETAILS, null, null); 
     this.db.delete(TABLE_NAME_ADDITIONAL_INFORMATION, null, null); 
    } 
private static class OpenHelper extends SQLiteOpenHelper { 

     OpenHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL("CREATE TABLE " + TABLE_NAME_MY_DETAILS + " (id INTEGER PRIMARY KEY, policy_number TEXT,policy_exp_date TEXT,last_name TEXT,first_name TEXT,DOB TEXT,emergency_contact TEXT)"); 
      db.execSQL("CREATE TABLE " + TABLE_NAME_ADDITIONAL_INFORMATION + " (id INTEGER PRIMARY KEY, claimant_location TEXT,loss_date TEXT,claimant_description TEXT,image1 TEXT,image2 TEXT)"); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w("Example", "Upgrading database, this will drop tables and recreate."); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_MY_DETAILS); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_ADDITIONAL_INFORMATION); 
     onCreate(db); 
     } 
    } 
}  

日誌:

12-21 10:17:29.916: ERROR/Database(893): java.lang.IllegalStateException: mPrograms size 2 
12-21 10:17:29.916: ERROR/Database(893):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1669) 
12-21 10:17:29.916: ERROR/Database(893):  at dalvik.system.NativeStart.run(Native Method) 
12-21 10:17:29.916: ERROR/Database(893): Caused by:  java.lang.IllegalStateException: /data/data/com.test.aviva.insurance/databases/aviva.db SQLiteDatabase created and never closed 
12-21 10:17:29.916: ERROR/Database(893):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1695) 
..... 
12-21 10:17:29.985: ERROR/Database(893): Leak found 
12-21 10:17:29.985: ERROR/Database(893): Caused by:  java.lang.IllegalStateException: /data/data/com.test.aviva.insurance/databases/aviva.db SQLiteDatabase created and never closed 
... 
12-21 10:17:29.985: ERROR/Database(893):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1695) 

感謝

+0

您可以嘗試使用[StrictMode(http://developer.android.com/reference/android/os/StrictMode.html) – Karthik 2011-12-21 04:55:45

+0

你有它:HTTP://stackoverflow.com /問題/ 8551818 /如何調試的,Android系統的應用程序行由行使用月食 – 2011-12-21 05:13:33

回答