Saya telah membuat database sqlite secara terprogram dengan cara default untuk memperluas SQLiteOpenHelper
dan menimpa onCreate()
. Dengan cara ini db dibuat dengan cepat saat dibutuhkan.
Saya ingin memeriksa konten file db di mesin OS X saya dengan browser sqlite. Saya tahu nama file dbnya, tetapi saya tidak dapat menemukannya di perangkat. Saya telah terhubung ke perangkat melalui USB dan mencari dengan finder dan terminal, tetapi saya tidak dapat menemukan file db.
Apa lokasi default untuk database sqlite di perangkat android?
Jawaban:
Anda dapat menemukan database yang Anda buat, bernama
<your-database-name>
di
Tarik keluar menggunakan File explorer dan ganti namanya menjadi memiliki ekstensi .db3 untuk digunakan di SQLiteExplorer
Gunakan File explorer dari DDMS untuk membuka direktori emulator.
sumber
700
. Anda membutuhkan hak akses root untuk melihatnya.Untuk ini, yang saya lakukan adalah
Dan untuk melakukan ini, aplikasi Anda harus memiliki izin untuk mengakses kartu SD, tambahkan pengaturan berikut ke manifest.xml Anda
Bukan cara yang brilian, tapi berhasil.
sumber
Konteks berisi banyak fungsi jalur: Context.getXXXPath ()
Salah satunya adalah android.content.Context.getDatabasePath (String dbname) yang mengembalikan jalur absolut database yang disebut dbname.
Jalur yang dikembalikan, dalam hal ini, akan menjadi seperti ini:
Perhatikan bahwa jalur ini dibuat secara otomatis jika menggunakan SQLiteOpenHelper untuk membuka DB.
sumber
Jika Anda berbicara tentang perangkat nyata
/data/data/<application-package-name>
tidak dapat diakses. Anda harus memiliki hak root ...sumber
sudo su
Ini dan pertanyaan lama, tetapi menjawab mungkin membantu orang lain.
Jalur default tempat Android menyimpan database tidak dapat diakses pada perangkat yang tidak di-rooting. Jadi, cara termudah untuk mengakses file database (hanya untuk lingkungan debugging) adalah dengan memodifikasi konstruktor kelas:
Ingatlah untuk mengubah lingkungan produksi dengan jalur ini:
sumber
Failed to open database '/mnt/sdcard/itens'.
diLogcat
/data/data/packagename/databases/
yaitu
/data/data/com.example.program/databases/
sumber
Database SQLite hanyalah sebuah file. Anda dapat mengambil file itu, memindahkannya, dan bahkan menyalinnya ke sistem lain (misalnya, dari ponsel Anda ke workstation Anda), dan itu akan berfungsi dengan baik. Android menyimpan file tersebut di
/data/data/packagename/databases/
direktori. Anda dapat menggunakanadb command
atauFile Explorer view
di Eclipse (Window > Show View > Other... > Android > File Explorer
) untuk melihat, memindahkan, atau menghapusnya.sumber
baik ini mungkin terlambat tetapi itu akan membantu. Anda dapat mengakses database tanpa me - rooting perangkat Anda melalui adb
mulai adb menggunakan cmd dan ketik perintah berikut
Sekarang Anda dapat membukanya dari sini.
sumber
Jika Anda menamai db Anda sebagai file tanpa memberikan jalur maka cara paling umum untuk mendapatkan foldernya adalah seperti:
di mana
DBAdapter.DATABASE_NAME
hanyaString
seperti "mydatabase.db".Context.getFilesDir()
mengembalikan jalur untuk file aplikasi seperti:/data/data/<your.app.packagename>/files/
itulah mengapa Anda perlu.getParent()+"/databases/"
, untuk menghapus "file" dan menambahkan "database" sebagai gantinya.BTW Eclipse akan memperingatkan Anda tentang string "data / data /" yang di-hardcode, tetapi tidak dalam kasus ini.
sumber
Dan periksa apakah database Anda disimpan ke Penyimpanan Perangkat. Jika demikian, Anda harus menggunakan izin di Manifest.xml:
sumber
Anda dapat mengaksesnya menggunakan adb shell how-to
Konten dari tautan di atas:
sumber
Jika aplikasi Anda membuat database, database ini secara default disimpan di direktori
DATA/data/APP_NAME/databases/FILENAME.
Bagian dari direktori di atas dibuat berdasarkan aturan berikut. DATA adalah jalur yang dikembalikan metode Environment.getDataDirectory (). APP_NAME adalah nama aplikasi Anda. FILENAME adalah nama yang Anda tentukan dalam kode aplikasi Anda untuk database.
sumber
Anda juga dapat memeriksa apakah IDE Anda memiliki utilitas seperti perspektif DDMS Eclipse yang memungkinkan Anda menjelajahi direktori dan / atau menyalin file ke dan dari Emulator atau perangkat yang di-rooting.
sumber
Tentukan nama database Anda seperti:
Dan Anda dapat melihat database Anda di:
sumber
Jangan melakukan hardcode "/ sdcard /"; gunakan Environment.getExternalStorageDirectory (). getPath () sebagai gantinya
sumber
Jangan seperti hardcode path
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
. Yah itu berfungsi dalam banyak kasus, tetapi yang ini tidak berfungsi di perangkat di mana perangkat dapat mendukung banyak pengguna. Jalannya bisa seperti//data/user/10/<Your-Application-Package-Name>/databases/<your-database-name>
. Solusi yang mungkin untuk ini adalah dengan menggunakancontext.getDatabasePath(<your-database-name>)
.sumber