[Dev] SQLite Database บน Android กับเรื่องวุ่น ๆ ที่มือใหม่ควรรู้

SQLite Database เป็น DBMS ขนาดเล็ก ที่นิยมใช้กันบน Mobile Platform ทั้งหลาย ไม่ว่าจะเป็น Android, iOS, Windows Phone และอื่น ๆ อีกมากมาย

SQLite Logo

สำหรับ SQLite บน Android นั้น มีเรื่องเล็กน้อยที่ Developer ควรจะรู้ คือว่า Database file ที่สร้างขึ้นมานั้น จะต้องมี Table android_metadata อยู่ด้วย ถึงจะใช้งานได้…

App บน Android มีวิธีการใช้งาน SQLite อยู่หลัก ๆ 2 วิธี คือ

  1. สร้าง Database file ด้วยชุดคำสั่ง เมื่อใช้งาน App ครั้งแรก
  2. สร้าง Database file ไว้ก่อน ด้วยเครื่องมือ เมื่อเปิดใช้งาน App ครั้งแรก ค่อย Copy ไปใช้

สำหรับวิธีแรกนั้น เราต้องเขียนคำสั่งสร้าง Database ขึ้นมาเอง สร้าง Table ขึ้นมาเอง และอาจมีการใส่ข้อมูลเริ่มต้นไว้ด้วย ใน Internet มีเขียนอธิบายไว้มากมาย และบทความนี้ ไม่ขออธิบายนะครับ เพราะไม่ได้เน้นเรื่อง Coding

ส่วนวิธีที่สอง การสร้าง Database file ไว้ก่อนนั้น ส่วนใหญ่นิยมใช้เครื่องมือที่ชื่อว่า SQLite Database Browser ซึ่งเป็น Open Source software ที่มีให้ใช้งานบน Windows, Linux และ Mac OS ซึ่งช่วยอำนวยความสะดวกได้มาก

สิ่งนึง ที่ Android Developer มือใหม่ มักไม่รู้ คือ SQLite Database file ที่ใช้บน Android จำเป็นต้องมี Table android_metadata หากไม่มี จะไม่สามารถใช้งานได้

สำหรับบทความนี้ จะเป็นการทดสอบให้เห็นว่า เราควรสร้าง Database file ยังไง ให้สามารถใช้งานบน Android ได้ โดยขอให้ผู้อ่าน ลองทำตามในหัวข้อต่อไป

 

List of contents

 

Create SQLite Database with SQLite Database Browser

ก่อนอื่น มาลองทดสอบสร้าง Database file ด้วย SQLite Database Browser กันก่อน

เปิดโปรแกรม SQLite Database Browser ขึ้นมา แล้วสร้าง Database file ใหม่ โดยไปที่เมนู File > New Database (หรือคลิก Icon Create a new database file จาก Toolbar) ตั้งชื่อ Database file ให้เรียบร้อย

สร้าง Database file ใหม่ ด้วยโปรแกรม SQLite Database Browser
สร้าง Database file ใหม่ ด้วยโปรแกรม SQLite Database Browser
ตั้งชื่อ Database file ให้เรียบร้อย
ตั้งชื่อ Database file ให้เรียบร้อย

กำหนดชื่อ Table และสร้าง Field ตามต้องการ

ตั้งชื่อ Table และสร้าง Field ตามต้องการ
ตั้งชื่อ Table และสร้าง Field ตามต้องการ

เมื่อสร้างเสร็จแล้ว จะเห็น Table ใน Database ดังนี้

Table ที่สร้างไว้ แสดงอยู่ใน Tab Database Structure
Table ที่สร้างไว้ แสดงอยู่ใน Tab Database Structure

เซฟไฟล์ให้เรียบร้อย

ทีนี้ลองนำไปใช้งานใน Android ดู จะพบว่า ไม่สามารถใช้งานได้

สาเหตุก็เพราะ Database file ที่สร้างขึ้นมานั้น ไม่มี Table android_metadata นั่นเอง เพราะว่าโปรแกรม SQLite Database Browser ไม่ได้ออกแบบมาเพื่อใช้งานกับ Android โดยเฉพาะ อย่างที่เกริ่นไปตั้งแต่ต้นว่า SQLite นั้น ถูกนำไปใช้บน Mobile Platform ที่หลากหลายนั่นเอง

ครั้นจะสร้าง Table android_metadata ขึ้นมาเอง ก็ไม่ชัวร์ว่าสามารถนำไปใช้ได้หรือไม่

ใครที่ลองสร้าง Table android_metadata บน SQLite Database Browser (ดูรายละเอียดทั้งหมดที่หัวข้อท้าย ๆ) แล้วนำไปใช้งาน รบกวนช่วยแจ้งผลให้ทราบด้วยนะครับ ว่าใช้ได้ไม๊

ถ้าอย่างนั้น จะทำอย่างไรดีล่ะ~!? ดูหัวข้อต่อไปกันเลย

 

Create SQLite Database with aSQLiteManager

aSQLiteManager เป็นหนนึ่งใน App บน Android ที่สามารถจัดการกับ SQLite Database file ได้ ขอให้ทุกคนติดตั้งลงบน Android Device ของตัวเองให้เรียบร้อย

เปิด App aSQLiteManager ขึ้นมา จะพบหน้าตาของ App ดังนี้

ณ Version ปัจจุบัน บน Android ใช้ชื่อ Icon และชื่อบน Title ว่า dSQLiteManager ไม่รู้ว่าผู้พัฒนาใส่ผิด หรือตั้งใจ หาก Sort ชื่อ App ใน App Drawer เรียงตามตัวอักษร ต้องดูที่ตัว dSQLiteManager นะครับ ผมก็หาชื่อ aSQLiteManager ตั้งนาน

หน้าตาของ App aSQLiteManager
หน้าตาของ App aSQLiteManager

แตะไปที่ New database เพื่อสร้าง SQLite Database file ขึ้นมาใหม่ บน Android

สร้าง SQLite Database file ขึ้นมาใหม่ ตั้งชื่อไฟล์ให้เรียบร้อย
สร้าง SQLite Database file ขึ้นมาใหม่ ตั้งชื่อไฟล์ให้เรียบร้อย

จะเห็นว่า SQLite Database file ที่สร้างขึ้น มี Table android_metadata สร้างขึ้นมาให้อัตโนมัติ

โครงสร้างของ SQLite Database file ที่สร้างขึ้น จะมี Table android_metadata สร้างขึ้นมาอัตโนมัติ
โครงสร้างของ SQLite Database file ที่สร้างขึ้น จะมี Table android_metadata สร้างขึ้นมาอัตโนมัติ

Copy ไฟล์ออกจาก Android มาเปิดบนโปรแกรม SQLite Database Browser ดู ก็จะพบ Table android_metadata เช่นกัน

นำ SQLite Database file จาก aSQLiteManager มาเปิด
นำ SQLite Database file จาก aSQLiteManager มาเปิด

ลองดูที่ Tab Browse Data จะพบว่า Table android_metadata มีข้อมูลอยู่ 1 Record ตามรูป

ข้อมูลที่มีอยู่ใน Table android_metadata
ข้อมูลที่มีอยู่ใน Table android_metadata

SQLite Database file แบบนี้ล่ะ ถึงจะใช้งานบน Android ได้

 

สำหรับใครที่ต้องสร้าง SQLite Database file ขึ้นใหม่ หากต้องมาทำแบบนี้ทุกครั้ง ก็คงไม่สนุก หากใครได้ลองทำตามขั้นตอนด้านบนมาแล้ว ก็จะได้ไฟล์ต้นฉบับ หรือ Master file สำหรับ SQLite Database มาแล้ว เก็บไฟล์ไว้ให้ดี ๆ แล้ว Copy ไปใช้ต่อได้เลย…

หากใครไม่ได้ทำตาม หรือขี้เกียจทำ ผมมีทางลัดให้ สามารถ Download file base_db.sqlite ไปใช้ได้เลย (สร้างมาตามบทความนี้ล่ะ)

แต่ลองทำตามหน่อยเถอะ จะได้เรียนรู้ได้ด้วยตัวเองบ้างนะครับ

Leave a Reply

Your email address will not be published.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.