java - "A SQLiteConnection was leaked" warning -


i have problem sqlite, i'm getting warning:

   sqliteconnection object database '//data//data//com.compapps.booster//databases//booster.db' leaked!  please fix application end transactions in progress , close database when no longer needed. 

and logcat showing continuously, after closing app:

database exists 

so think programm perform execution if app closed, here code of class:

package com.compapps.booster.db;  import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.util.arraylist;  import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqliteconstraintexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.util.log;  import com.compapps.booster.model.appinfo; import com.compapps.booster.model.usedappinfo; import com.compapps.booster.utill.const;  public class externaldbopenhelper extends sqliteopenhelper {      // path device folder databases     public static string db_path;      // database file name     public static string db_name;     public sqlitedatabase database;     public final context context;      public sqlitedatabase getdb() {         return database;     }      public externaldbopenhelper(context context, string databasename,             int databaseversion) {         super(context, databasename, null, databaseversion);         this.context = context;         // write full path databases of application         string packagename = context.getpackagename();         db_path = string.format("//data//data//%s//databases//", packagename);         db_name = databasename;         opendatabase();     }      // piece of code create database if itï؟½s not yet created     public void createdatabase() {         boolean dbexist = checkdatabase();         if (!dbexist) {              this.getreadabledatabase();             try {                 copydatabase();             } catch (ioexception e) {                 log.e(this.getclass().tostring(), "copying error");                 throw new error("error copying database!");             }         } else {             log.i(this.getclass().tostring(), "database exists");         }     }      // performing database existence check     private boolean checkdatabase() {         sqlitedatabase checkdb = null;         try {             string path = db_path + db_name;             checkdb = sqlitedatabase.opendatabase(path, null,                     sqlitedatabase.open_readonly);         } catch (sqlexception e) {             log.e(this.getclass().tostring(), "error while checking db");         }         // android doesnt resource leaks, should         // closed         if (checkdb != null) {             checkdb.close();         }         return checkdb != null;     }      // method copying database     private void copydatabase() throws ioexception {         // open stream reading our ready-made database         // stream source located in assets         inputstream externaldbstream = context.getassets().open(db_name);          // path created empty database on android device         string outfilename = db_path + db_name;          // create stream writing database byte byte         outputstream localdbstream = new fileoutputstream(outfilename);          // copying database         byte[] buffer = new byte[1024];         int bytesread;         while ((bytesread = externaldbstream.read(buffer)) > 0) {             localdbstream.write(buffer, 0, bytesread);         }         // dont forget close streams         localdbstream.close();         externaldbstream.close();     }      public sqlitedatabase opendatabase() throws sqlexception {         string path = db_path + db_name;         if (database == null) {             createdatabase();         }         database = sqlitedatabase.opendatabase(path, null,                 sqlitedatabase.open_readwrite);         return database;     }      @override     public void oncreate(sqlitedatabase db) {     }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {     }      public void insertautokillapps(final arraylist<appinfo> listautokillapps) {         (int = 0; < listautokillapps.size(); i++) {             if (listautokillapps.get(i).ischecked()) {                 appinfo info = listautokillapps.get(i);                 contentvalues values = new contentvalues();                 values.put(const.tblautokillcolumn.app_name, info.getappname());                 values.put(const.tblautokillcolumn.package_name,                         info.getpkgname());                 values.put(const.tblautokillcolumn.process_id,                         info.getprocessid());                 int id = (int) database.insert(const.table_auto_kill, null,                         values);              }         }     }      public int insertautokillapp(appinfo info) {          contentvalues values = new contentvalues();         values.put(const.tblautokillcolumn.app_name, info.getappname());         values.put(const.tblautokillcolumn.package_name, info.getpkgname());         // values.put(const.tblautokillcolumn.process_id, info.getprocessid());         int id = (int) database.insert(const.table_auto_kill, null, values);         return id;      }      public int insertallautokillapp(arraylist<appinfo> list) {         int count = 0;         (int = 0; < list.size(); i++) {             appinfo info = list.get(i);             contentvalues values = new contentvalues();             values.put(const.tblautokillcolumn.app_name, info.getappname());             values.put(const.tblautokillcolumn.package_name, info.getpkgname());             // values.put(const.tblautokillcolumn.process_id,             // info.getprocessid());             int id = (int) database.insert(const.table_auto_kill, null, values);             if (id != -1) {                 count += 1;             }         }         system.out.println("total app kill inserted " + count);         return count;      }      public boolean deleteautokillapp(appinfo info) {          int row = database.delete(const.table_auto_kill,                 const.tblautokillcolumn.package_name + " = ?",                 new string[] { info.getpkgname() });          if (row != 0) {             return true;         }          return false;      }      public int deleteallautokillapp(arraylist<appinfo> list) {          int count = 0;         (int = 0; < list.size(); i++) {             appinfo info = list.get(i);             int row = database.delete(const.table_auto_kill,                     const.tblautokillcolumn.package_name + " = ?",                     new string[] { info.getpkgname() });             if (row != 0) {                 count += 1;             }         }         system.out.println("total app kill deleted " + count);         return count;     }      public arraylist<appinfo> getautokillapps() {         arraylist<appinfo> applist = new arraylist<appinfo>();         string selectquery = "select  * " + const.table_auto_kill;         cursor cursor = database.rawquery(selectquery, null);         try {             if (cursor != null && cursor.getcount() > 0) {                 if (cursor.movetofirst()) {                     {                          appinfo info = new appinfo();                         info.setappname(cursor.getstring(0));                         info.setpkgname(cursor.getstring(1));                         // info.setprocessid(cursor.getint(2));                         applist.add(info);                     } while (cursor.movetonext());                 }             }              return applist;         } catch (exception e) {             log.d("error in getting app auto kill db", e.getmessage());             return applist;         }         finally{             cursor.close();         }     }      public int insertusedappinfo(usedappinfo uappinfo, boolean isupdate) {         int id = 0;         if (isupdate) {             contentvalues values = new contentvalues();             values.put(const.tblappusedcolumn.open_counter,                     uappinfo.getcounter());             values.put(const.tblappusedcolumn.open_time, uappinfo.gettime());             string[] args = new string[] { uappinfo.getpackage_name() };             id = (int) database.update(const.table_app_used_detail, values,                     const.tblappusedcolumn.package_name + "=?", args);         } else {             contentvalues values = new contentvalues();             values.put(const.tblappusedcolumn.package_name,                     uappinfo.getpackage_name());             values.put(const.tblappusedcolumn.open_counter,                     uappinfo.getcounter());             values.put(const.tblappusedcolumn.open_time, uappinfo.gettime());             id = (int) database.insert(const.table_app_used_detail, null,                     values);         }         return id;     }      public usedappinfo gettusedappinfo(string packagename) {         usedappinfo uappinfo = null;         string selectquery = "select  * " + const.table_app_used_detail                 + " " + const.tblappusedcolumn.package_name + " = "                 + "\"" + packagename + "\"";          system.out.println("query coding: " + selectquery);         try {              cursor cursor = database.rawquery(selectquery, null);             if (cursor != null && cursor.getcount() > 0) {                 if (cursor.movetofirst()) {                     uappinfo = new usedappinfo();                     uappinfo.setpackage_name(cursor.getstring(0));                     uappinfo.setcounter(cursor.getint(1));                     uappinfo.settime(cursor.getstring(2));                 }                 cursor.close();             }              return uappinfo;         } catch (exception e) {             log.d("error in getting app info db", e.getmessage());             return null;         }      }      @override     public synchronized void close() {         if (database != null) {             database.close();         }         super.close();     } } 

can have please, thanks!


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -