SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Tidak dapat mencegah kebocoran objek SQLiteConnection

Anda mengatakan Anda melihat banyak pertanyaan online, tetapi Anda jelas tidak melihat ini atau ini. Ini benar-benar dipotong 5 menit dalam pencarian.

Bagaimanapun, jika saya jadi Anda, untuk mengatasi masalah ini, saya akan menyertakan finally klausa saat menutup koneksi. Ini berarti Anda akan mendeklarasikan pembantu database Anda sebagai variabel instans statis dan menggunakan pola Pabrik Abstrak untuk menjamin properti tunggal.

Peringatan Anda terjadi karena Anda tidak memastikan bahwa hanya satu DatabaseHelper akan pernah ada pada waktu tertentu. Jika mInstance objek belum diinisialisasi, satu akan dibuat. Jika ada yang sudah dibuat maka akan dikembalikan begitu saja.

Ini kodenya:

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

Tetapi karena Anda mengatakan bahwa satu-satunya kontribusi saya untuk pertanyaan Anda (yang telah dijawab di pos lain) adalah untuk memperbaiki kekurangan bahasa Inggris dasar Anda, maka saya tidak yakin apakah Anda dapat menerima ini sebagai jawaban yang memadai.




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

  2. Inisialisasi SQLite dan database

  3. Bagaimana Round() Bekerja di SQLite

  4. jika tabel saya memiliki 4 kolom dan saya ingin mengambil kolom ke-3 apa yang harus saya lakukan.

  5. Tidak dapat memasukkan catatan ke Database SQLite dari Firebase Message Service saat aplikasi berada di latar belakang atau keadaan tertutup