SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Nie można zapobiec wyciekowi obiektu SQLiteConnection

Mówisz, że przeanalizowałeś wiele pytań w Internecie, ale na pewno nie zajmowałeś się tym czy tym. Dosłownie minęło 5 minut na wyszukiwanie.

W każdym razie, gdybym był tobą, aby rozwiązać ten problem, dołączyłbym finally klauzula przy zamykaniu połączenia. Oznacza to, że deklarujesz pomocnika bazy danych jako statyczną zmienną instancji i używasz wzorca Fabryka abstrakcyjna, aby zagwarantować właściwość singleton.

Twoje ostrzeżenie ma miejsce, ponieważ nie zapewniasz, że tylko jeden DatabaseHelper kiedykolwiek zaistnieje. Jeśli mInstance obiekt nie został zainicjowany, zostanie utworzony. Jeśli został już utworzony, zostanie po prostu zwrócony.

Oto kod:

public ArrayList<ItemSubject> loadDataSubject() {
    ArrayList<ItemSubject> arrayList = new ArrayList<>();
    String select = "select * from " + TABLE_SUBJECT;
    Cursor cursor = getData(select);
    
    
    if (cursor != null && cursor.getCount() > 0) {
    try {
        cursor.moveToFirst();
            for (int i = 0; i < cursor.getCount(); i++) {
                String id = cursor.getString(cursor.getColumnIndex(TAG_ID));
                String course = cursor.getString(cursor.getColumnIndex(TAG_COURSE_NAME));
         ....
                ItemSubject objItem = new ItemSubject(id, courseId,...);
                arrayList.add(objItem);
                cursor.moveToNext();
           }
       finally {
           if (cursor != null)
           cursor.close();
       }
   }
   return arrayList;
}    

Ale skoro mówisz, że moim jedynym wkładem w twoje pytanie (na które już znalazłem odpowiedź w innych postach) jest udoskonalenie twojego braku podstawowej znajomości angielskiego, to nie jestem pewien, czy możesz zaakceptować to jako odpowiednią odpowiedź.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalacja SQLite

  2. chmod nie powiodło się:EPERM (operacja niedozwolona) w Androidzie?

  3. SQLite — jakakolwiek różnica między ograniczeniem tabeli UNIQUE a ograniczeniem kolumny UNIQUE?

  4. dane załadowane z bazy danych SQLitE nie są zapisywane w klasie modelu ArrayList android

  5. SQLite nie może otworzyć pliku bazy danych (kod 14) przy częstym zapytaniu SELECT