Το Database Inspector στο Android Studio — είναι ένα ενσωματωμένο εργαλείο για προβολή και εντοπισμό σφαλμάτων βάσεων δεδομένων SQLite της εφαρμογής σε πραγματικό χρόνο. Σύμφωνα με την επίσημη τεκμηρίωση του Android Developers (2025), το εργαλείο επιτρέπει την εκτέλεση SQL ερωτημάτων στην ενεργή βάση, την προβολή της δομής των πινάκων και την επεξεργασία εγγραφών χωρίς διακοπή της εφαρμογής. Το εργαλείο υποστηρίζει Room, SQLiteOpenHelper και οποιεσδήποτε in-app βάσεις δεδομένων, εντοπίζοντάς τες αυτόματα κατά την εκκίνηση της προφιλοποίησης.
Κύρια σημεία
Database Inspector — είναι ένα εργαλείο του Android Studio για επιθεώρηση και εντοπισμό σφαλμάτων τοπικών βάσεων δεδομένων στην εφαρμογή. Επιτρέπει την προβολή όλων των βάσεων δεδομένων SQLite που δημιουργήθηκαν από την εφαρμογή, συμπεριλαμβανομένων βάσεων Room, SQLiteOpenHelper και βιβλιοθηκών τρίτων. Το εργαλείο είναι διαθέσιμο από το Android Studio 4.1 και εκκινείται μέσω του Android Profiler ή απευθείας από το μενού View.
Ο κύριος στόχος του Database Inspector είναι η οπτικοποίηση δεδομένων κατά τη διαδικασία ανάπτυξης. Αντί να εξάγει το περιεχόμενο της βάσης στο log ή να γράφει ξεχωριστή οθόνη για προβολή δεδομένων, ο προγραμματιστής μπορεί να ανοίξει το Database Inspector και να δει αμέσως όλους τους πίνακες, το σχήμα και το περιεχόμενό τους. Το εργαλείο υποστηρίζει τόσο σχεσιακές βάσεις SQLite όσο και Room με Auto-μεταναστεύσεις.
Το εργαλείο είναι απαραίτητο σε σενάρια όταν χρειάζεται να ελεγχθεί η ορθότητα αποθήκευσης δεδομένων μετά από μια λειτουργία: εγγραφή χρήστη, συγχρονισμός με διακομιστή, προσωρινή αποθήκευση λιστών. Αντί να γράφετε δοκιμαστικό UI, το dump της βάσης προβάλλεται μέσω του Database Inspector. Το εργαλείο χρησιμοποιείται επίσης ενεργά για τον εντοπισμό σφαλμάτων μεταναστεύσεων Room — το τρέχον σχήμα των πινάκων μπορεί να προβληθεί μετά από κάθε ενημέρωση σχήματος.
Το Database Inspector συνδέεται στη διεργασία της εφαρμογής Android μέσω του Android Profiler Service. Εντοπίζει όλες τις ανοιχτές συνδέσεις SQLite στην εφαρμογή και τις εμφανίζει στο πλαϊνό πάνελ. Για τη λειτουργία απαιτείται έκδοση Debug της εφαρμογής με API Level 26 (Android 8.0) και άνω.
Κατά την εκκίνηση, το Database Inspector δημιουργεί μια σήραγγα ADB μεταξύ της εφαρμογής στη συσκευή και του IDE στον υπολογιστή. Τα αρχεία WAL (Write-Ahead Logging) της βάσης δεδομένων SQLite μεταδίδονται μέσω αυτής της σήραγγας για την εμφάνιση περιεχομένου. Οι εντολές SQL αποστέλλονται απευθείας στη μηχανή SQLite της εφαρμογής μέσω της υποστήριξης Database Inspector στο Room και το SQLiteDatabase. Το εργαλείο εντοπίζει αυτόματα τη στιγμή που η εφαρμογή ανοίγει μια βάση δεδομένων και την προσθέτει στη λίστα επιθεώρησης.
Για τη σωστή λειτουργία του Database Inspector απαιτείται: Android Studio 4.1+, συσκευή ή εξομοιωτής με API Level 26+, έκδοση Debug της εφαρμογής. Για Room απαιτείται επιπλέον η βιβλιοθήκη room-runtime έκδοσης 2.2+. Εάν η βάση δεδομένων δημιουργείται σε λειτουργία WAL, που είναι το πρότυπο για Room 2.2+, το εργαλείο μπορεί να διαβάζει δεδομένα χωρίς να μπλοκάρει την κύρια εφαρμογή.
// Παράδειγμα βάσης δεδομένων Room που υποστηρίζεται από το Database Inspector
@Database(
entities = [User::class, Order::class],
version = 2,
autoMigrations = [AutoMigration(from = 1, to = 2)]
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun orderDao(): OrderDao
}
Το Database Inspector παρέχει πλήρες σύνολο λειτουργιών για εργασία με τοπικά δεδομένα: από την προβολή σχήματος πινάκων έως την εκτέλεση σύνθετων SQL ερωτημάτων και την επεξεργασία εγγραφών.
Στο αριστερό πάνελ εμφανίζονται όλες οι βάσεις δεδομένων και οι πίνακες. Κατά την επιλογή ενός πίνακα, το περιεχόμενό του ανοίγει σε μορφή πίνακα με στήλες: όλα τα πεδία εγγραφής εμφανίζονται ως στήλες, κάθε γραμμή είναι ξεχωριστή εγγραφή. Το σχήμα του πίνακα (όνομα, τύπος, περιορισμοί) εμφανίζεται στην κορυφή. Για ξένα κλειδιά εμφανίζονται οι σχέσεις μεταξύ πινάκων.
| Τύπος δεδομένων | Τύπος SQLite | Τύπος Room | Παράδειγμα |
|---|---|---|---|
| Ακέραιος αριθμός | INTEGER | Int, Long | 42 |
| Συμβολοσειρά | TEXT | String | “John” |
| Δεκαδικός αριθμός | REAL | Double, Float | 3.14 |
| Δυαδικά δεδομένα | BLOB | ByteArray | [0x00, 0x01] |
| Ημερομηνία/ώρα | INTEGER (Unix epoch) | Long, Date | 1720000000 |
Η καρτέλα Query επιτρέπει την εκτέλεση αυθαίρετων εντολών SQL απευθείας στην επιλεγμένη βάση δεδομένων. Υποστηρίζονται SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, JOIN και οποιοιδήποτε άλλοι τελεστές SQLite. Τα αποτελέσματα εμφανίζονται σε μορφή πίνακα κάτω από τον επεξεργαστή ερωτημάτων. Το ιστορικό ερωτημάτων αποθηκεύεται κατά τη διάρκεια της συνεδρίας.
Τα κελιά του πίνακα μπορούν να επεξεργαστούν απευθείας — απλά κάντε κλικ στην τιμή και εισάγετε μια νέα. Οι αλλαγές εφαρμόζονται αμέσως στην εκτελούμενη εφαρμογή. Αυτό είναι ιδιαίτερα χρήσιμο για τη δοκιμή οριακών περιπτώσεων: ορισμός null σε υποχρεωτικό πεδίο, αντικατάσταση ID με ανύπαρκτο, έλεγχος επεξεργασίας μεγάλων συμβολοσειρών. Όλες οι αλλαγές καταγράφονται σε πραγματικό χρόνο.
Το Database Inspector έχει βαθιά ενσωμάτωση με το Room, καθιστώντας το απαραίτητο κατά την ανάπτυξη εφαρμογών με αυτή τη βιβλιοθήκη. Εκτός από την τυπική λειτουργικότητα, ο επιθεωρητής παρέχει ειδικές δυνατότητες για το Room.
Για βάσεις Room, το Database Inspector εμφανίζει τα παραγόμενα SQL ερωτήματα για κάθε μέθοδο DAO. Αυτό επιτρέπει την επαλήθευση ότι το Room παράγει σωστό SQL, ειδικά για σύνθετα ερωτήματα με JOIN, @Relation και @Transaction. Εάν το Room εκτελεί ένα μη αποδοτικό ερώτημα (π.χ. N+1 ερωτήματα αντί για ένα JOIN), αυτό είναι άμεσα ορατό στο αρχείο καταγραφής ερωτημάτων του Database Inspector.
Κατά την ενημέρωση του σχήματος Room με AutoMigration ή μη αυτόματες μεταναστεύσεις, το Database Inspector δείχνει την τρέχουσα δομή των πινάκων μετά τη μετανάστευση. Αρκεί να ανοίξετε τον επιθεωρητή μετά την εκκίνηση της εφαρμογής και να ελέγξετε ότι όλες οι στήλες, τα ευρετήρια και τα ξένα κλειδιά έχουν δημιουργηθεί σωστά. Εάν η μετανάστευση απέτυχε με σφάλμα, η βάση δεδομένων δεν θα ανοίξει — το εργαλείο θα δείξει την τελευταία διαθέσιμη έκδοση.
Το Room επιτρέπει τον συνδυασμό δεδομένων από πολλαπλούς πίνακες μέσω @Relation και @Embedded. Το Database Inspector βοηθά στον οπτικό έλεγχο της ορθότητας των σχέσεων εμφανίζοντας δεδομένα σχετικών πινάκων δίπλα-δίπλα. Για κάθε ξένο κλειδί μπορείτε να πλοηγηθείτε στον σχετικό πίνακα με ένα κλικ.
// Οντότητα με Relation για έλεγχο μέσω Database Inspector
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String
)
data class UserWithOrders(
@Embedded val user: User,
@Relation(parentColumn = "id", entityColumn = "user_id")
val orders: List<Order>
)
Το Database Inspector λύνει συγκεκριμένες εργασίες προγραμματισμού που προκύπτουν κατά την εργασία με τοπική αποθήκευση δεδομένων. Ας εξετάσουμε τα πιο συνηθισμένα σενάρια χρήσης του εργαλείου στην καθημερινή εργασία.
Συχνά η εφαρμογή αποθηκεύει προσωρινά αποκρίσεις API στην τοπική βάση δεδομένων. Το Database Inspector επιτρέπει να βεβαιωθείτε για την ορθότητα της προσωρινής αποθήκευσης: μετά την εκτέλεση συγχρονισμού, μπορείτε να δείτε τις τρέχουσες εγγραφές στον πίνακα προσωρινής αποθήκευσης. Εάν τα δεδομένα δεν εμφανίστηκαν — το πρόβλημα είναι στον κώδικα αποθήκευσης. Εάν εμφανίστηκαν διπλότυπα — το πρόβλημα είναι στη λογική upsert.
Όταν μια μέθοδος DAO δεν αποθηκεύει δεδομένα αλλά δεν ρίχνει εξαίρεση, το Database Inspector δείχνει την τρέχουσα κατάσταση του πίνακα. Τυπικές αιτίες: σύγκρουση Primary Key (ρύθμιση OnConflictStrategy), λανθασμένος τύπος δεδομένων στη στήλη, παραβίαση περιορισμών NOT NULL ή Foreign Key violation. Ο επιθεωρητής επιτρέπει την προβολή του changeset της βάσης πριν και μετά τη λειτουργία. Η σύγκριση στιγμιότυπων δεδομένων πριν και μετά την κλήση DAO — ένας από τους πιο αποτελεσματικούς τρόπους εντοπισμού σφαλμάτων συναλλαγών και ελέγχου της ορθότητας της επιχειρηματικής λογικής της εφαρμογής σε σύνθετες λειτουργίες εγγραφής.
Κατά την αλλαγή του σχήματος πινάκων — προσθήκη στηλών, μετονομασία πεδίων, διαίρεση πινάκων — το Database Inspector βοηθά στον έλεγχο του αποτελέσματος της μετανάστευσης. Αρκεί να εκκινήσετε την εφαρμογή με τη νέα έκδοση της βάσης και να βεβαιωθείτε ότι όλα τα δεδομένα έχουν μεταφερθεί σωστά στη νέα δομή. Εάν μετά τη μετανάστευση τα δεδομένα εξαφανίστηκαν, μπορούν να αποκατασταθούν από το dump που αποθηκεύτηκε πριν από την αναδόμηση. Αυτό το σενάριο είναι ιδιαίτερα σημαντικό κατά τη μετάβαση από SQLiteOpenHelper σε Room ή κατά την αλλαγή της δομής υπαρχόντων πινάκων σε μια νέα έκδοση της εφαρμογής.
Το Database Inspector μπορεί επίσης να χρησιμοποιηθεί για την αξιολόγηση της απόδοσης SQL ερωτημάτων. Εκτελώντας SELECT μέσω της καρτέλας Query και μετρώντας τον χρόνο απόκρισης, μπορούν να εντοπιστούν ερωτήματα που δεν έχουν ευρετήρια. Το Room καταγράφει αυτόματα αργά ερωτήματα στο Logcat με την ένδειξη SLOW SQL, και το Database Inspector επιτρέπει την άμεση εκτέλεση EXPLAIN QUERY PLAN για ανάλυση του σχεδίου εκτέλεσης.
Συχνές Ερωτήσεις
Βεβαιωθείτε ότι η εφαρμογή εκτελείται σε λειτουργία Debug και ότι το API Level της συσκευής είναι 26 ή υψηλότερο. Εάν η βάση δημιουργείται σε ξεχωριστή διεργασία ή με χρήση SQLCipher (κρυπτογράφηση), το Database Inspector μπορεί να μην την εντοπίσει. Για SQLCipher χρησιμοποιήστε μια βοηθητική debug βάση χωρίς κρυπτογράφηση.
Ναι, η επεξεργασία δεδομένων είναι δυνατή απευθείας στα κελιά του πίνακα. Κάντε διπλό κλικ στην τιμή για να την αλλάξετε. Οι αλλαγές εφαρμόζονται αμέσως στη βάση δεδομένων της εκτελούμενης εφαρμογής. Για προσθήκη νέων εγγραφών χρησιμοποιήστε ένα SQL ερώτημα INSERT μέσω της καρτέλας Query.
Όχι, το Database Inspector δεν υποστηρίζει Realm, καθώς το Realm δεν χρησιμοποιεί SQLite. Για τον εντοπισμό σφαλμάτων Realm χρησιμοποιήστε το Realm Object Server, το Realm Studio ή την καταγραφή στην εφαρμογή. Για το MongoDB Realm SDK είναι διαθέσιμο το δικό του εργαλείο Realm Studio για macOS, Windows και Linux.
Το Database Inspector επιτρέπει την εξαγωγή ολόκληρης της βάσης δεδομένων. Κάντε δεξί κλικ στο όνομα της βάσης στη λίστα και επιλέξτε Export Database. Το αρχείο .db θα αποθηκευτεί στον υπολογιστή. Για προβολή χρησιμοποιήστε οποιοδήποτε πρόγραμμα περιήγησης SQLite, π.χ. DB Browser for SQLite.
Σύμφωνα με την Google, η επιβάρυνση είναι ελάχιστη — το Database Inspector διαβάζει τα αρχεία WAL της βάσης δεδομένων χωρίς να μπλοκάρει την εγγραφή. Η εκτέλεση προσαρμοσμένων SQL ερωτημάτων μπορεί προσωρινά να επιβαρύνει τη βάση, αλλά αυτό ελέγχεται από τον προγραμματιστή. Για εκδόσεις παραγωγής, το εργαλείο απενεργοποιείται αυτόματα.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης