หน้าเว็บ

วันอังคารที่ 5 สิงหาคม พ.ศ. 2557

[Android] วิธีการดึง Database เข้า/ออกจาก Internal storage

หลายๆคนในที่นี้น่าจะมีประสบการณ์การใช้เจ้าตัว SQLite3 กันมาบ้าง ในที่นี่ผู้เขียนจะขอละวิธีการสร้าง DB ออกไปก่อนนะครับ เอาเป็นว่าขอติ๊ต่างว่าทุกคนสามารถสร้างกันเป็นอยู่แล้วล่ะ โดย Default แล้ว ก้อน DB ที่เราสร้างมันจะไปอยู่ใน Internal path ของแอพ เราไม่สามารถจะ access เข้าไปดูได้
ถ้าเจ้าตัวเครื่อง Device เราไม่ได้ Root   โดยปกติจะอยู่ใน 

data/data/<Package name ของแอพเรา>/databases/ชื่อ database.db 

แต่ถึงกระนั้น Google ก็ยังใจดีมีวิธีการให้เราเอาเจ้าก้อน DB ที่อยู่ข้างในออกมาดู วิธีการนั้นมีดังต่อไปนี้ครับ

ก่อนอื่นให้เราเปิดเจ้าตัว Android Manifest file ของ Project เราขึ้นมาก่อน จากนั้นให้ Attribute นี้เข้าไปที่ <application>

android:debuggable="true"

ใครไม่ชัวร์ดูตามรูปเลย


จากนั้นทำการ run Application เราปกติ
เมื่อมั่นใจว่า Database มีการสร้างแล้วแน่ๆ ให้เราทำการ shell เข้าไปที่ Device โดยไปที่ Android SDK path ของเครื่องเราก่อน

จากนั้นใช้คำสั่ง 

adb shell -d 

เมื่อ shell เข้ามาแล้วใช้คำสั่ง
run-as <ตามด้วยชื่อ Package name ของ แอพเรา>

ในที่นี้ผู้เขียนของสมมติว่า Package name ของ แอพผู้เขียนเป็นตัวนี้ละกัน  com.example.google.android
และชื่อ Database เป็น google.db

ก็ลองใช้คำสั่งตามเลยจะได้เป็น

run-as com.example.google.android

เท่านี้เราก็เข้ามาล้วงแคะแกะเกาในส่วนของ Internal Storage ของแอพเราได้แล้ว แต่เฉพาะแอพเรานะที่เราเข้ามาเล่นซนได้  พอเห็นภาพแล้วใช้มั๊ยครับ ถึงจุดนี้จะเอา database  ออกมาก็ไม่ใช่เรื่องยาก แค่ใช้คำสั่ง

cat /data/data/com.example.google.android/databases/google.db > /mnt/sdcard/google.db
ใช่แล้วจ้าผู้เขียน Copy มันไปไว้ที่ SDCard นั่นเอง

เท่านี้ก็เอาออกมาได้ละ 


แล้ววิธีการเอาเข้าล่ะ  Step ก็คล้ายๆกัน ต่างตรงที่สลับ Path กันแค่นั้น  อย่าลืมเอา DB ไปวางไว้ใน SDCard ก่อนเน้อ

cat /mnt/sdcard/google.db > /data/data/com.example.google.android/databases/google.db 

เอาไปลองประยุต์ใช้กันดูนะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น