sql >> Database teknologi >  >> RDS >> SQLite

Kan ikke forhindre SQLiteConnection-objektlækage

Du siger, at du har kigget på mange spørgsmål online, men du har bestemt ikke kigget på dette eller dette. Det dukkede bogstaveligt talt op 5 minutter i søgningen.

Anyways, hvis jeg var dig, for at løse dette problem, ville jeg inkludere en finally klausul ved lukning af forbindelsen. Det betyder, at du vil erklære din databasehjælper som en statisk instansvariabel og bruge det abstrakte fabriksmønster til at garantere singleton-egenskaben.

Din advarsel sker, fordi du ikke sikrer, at kun én DatabaseHelper nogensinde vil eksistere på et givet tidspunkt. Hvis mInstance objektet ikke er blevet initialiseret, vil der blive oprettet et. Hvis en allerede er oprettet, vil den blot blive returneret.

Her er koden:

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;
}    

Men da du siger, at mit eneste bidrag til dit spørgsmål (som allerede var blevet besvaret i andre indlæg) er at forfine din mangel på elementært engelsk, så er jeg ikke så sikker på, om du kan acceptere dette som et fyldestgørende svar.




  1. PRINT-sætning i T-SQL

  2. Migrering af en Oracle-database til MySQL på AWS, del 2

  3. PostgreSQL slette alt indhold

  4. Er COUNT(rowid) hurtigere end COUNT(*)?