SQLite กับ Titanium Mobile

SQLite เป็น Database ขนาดเล็กที่ได้รับความนิยมสำหรับ Application ที่ทำงานบน Smart Phone ทั้ง iOS และ Android ซึ่งมีรูปแบบการทำงานแบบ Standalone คือ ทำงานอยู่ใน Application นั้น ๆ โดย SQLite นั้นมีโครงสร้างที่ง่ายต่อการจัดเก็บและมีขนาดเล็กมาก จึงเหมาะกับการทำงานบน Smart Phone เป็นอย่างยิ่ง


หลังจากที่เราทำความรู้จักกับ SQLite กันไปแล้ว คราวนี้เราก็จะมาดูกันว่า Titanium นั้นรองรับการทำงานกับ SQLite อย่างไร 

Titanium Studio นั้นรองรับการทำงาน SQLite ผ่านทาง Module ที่มีชื่อว่า Titanium.Database  โดย Titanium.Database นั้น รองรับทั้งการทำงานบน iOS และ Android สำหรับในบทความนี้จะแสดงให้เห็นถึงวิธีการใช้งาน SQLite ร่วมกับ Titanium Studio โดยที่สามารถที่จะ สร้างตาราง , บันทึกข้อมูล ,​ แก้ไขข้อมูล และ การลบข้อมูล เรามาเริ่มกันเลยครับ 

สร้าง Database (Create Database)

ก่อนการทำงานใด ๆ กับ SQLite นี้สิ่งที่เราต้องดำเนินการก่อนก็คือการ Install Database Engine ลงใน Application ของเราครับซึ่งเราสามารถทำได้โดยใช้คำสั่ง 
Titanium.Database.install([filepath],[databasename]
เช่น หากเราต้องการสร้าง Database ชื่อว่า 'mobidevthai' โดยนำไปวางไว้ใน Path ของ Application Data Directory (ใช้คำสั่ง Titanium.Filesystem.applicationDataDirectory เพื่อนำเอา Application Data Directory ของเครื่องเรามาได้เลยครับ) โดยใช้คำสั่งแบบนี้ครับ 
Titanium.Database.install(Titanium.Filesystem.applicationDataDirectory + 'mobidevthai.db','mobidevthai');
จากคำสั่งข้างต้นนั้นเราจะได้ Database ที่มีชื่อว่า mobidevthai ขึ้นมาแล้วครับ 

สร้าง Table (Create Table)

หลังจากที่เราได้ Database แล้วเราก็จะมาทำการ สร้าง Table กันนะครับ ก่อนทำการสร้าง Table นั้นเราต้องทำการเปิด Database ของเราขึ้นมาก่อนครับ โดยใช้คำสั่ง แบบนี้
var db = Titanium.Database.open('mobidevthai');
โดยตัวแปรชื่อ db นั้นจะเป็นตัวเก็บ Connection เอาไว้ เมื่อเราทำการเปิด Database ขึ้นมาได้แล้วเราก็จะมาทำการสร้าง  Table กันครับ โดยการสร้าง Table นั้นก็จะใช้คำส่ง SQL Command ทั่ว ๆ ไปนั่นเองครับ
var sql = 'create table table1 ( id int, name varchar(20) )';
จากนั้นก็ทำการ Execute sql ที่เราเตรียมเอาไว้ครับ โดยใช้คำสั่ง
db.execute(sql);
เพียงเท่านี้เราก็จะได้ Table ที่อยู่ใน Database แล้วหล่ะครับ จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง 
db.close();

บันทึกข้อมูล (Insert Data), แก้ไขข้อมูล (Update Data) และ ลบข้อมูล (Delete)
การบันทึกข้อมูลลงใน SQLite นั้นก็สามารถทำได้อย่างง่ายดายครับ โดยเริ่มจากการ เปิด Database เหมือนกับการ สร้าง Table ครับ 
var db = Titanium.Database.open('mobidevthai')
จากนั้นก็ทำการกำหนด SQL Command เพื่อทำการ Insert ข้อมูล 
var sql = 'insert into table1 values(1,\'Mobidevthai.com\');
จากนั้นก็ทำการ Execute  sql 
db.execute(sql);
ส่วนการ Update และ Delete นั้นก็ใช้วิธีเดียวกันกับการ Insert ข้อมูลนั่นก็คือการสร้าง SQL Command ตามการทำงานนั้นเอง 
//การ Update ข้อมูล
var sql = 'update table1 set name = \'www.mobidevthai.com\') where id = 1';
//การ Delete  ข้อมูล
var sql = 'delete table1 where id = 1';


จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง 
db.close();

ดึงข้อมูล (Select)

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

เริ่มแรกก็จะเหมือนกับการบันทึกข้อมูล นั่นก็คือการเปิด Database ครับ 
var db = Titanium.Database.open('mobidevthai');
จากนั้นก็กำหนด SQL Command เพื่อทำการ  Select ข้อมูล ครับ
var sql  = 'select id,name from table1';
จากนั้นก็ทำการ Execute ครับ สิ่งที่แตกต่างจากการ Insert , Update  และ Delete  นั้นก็คือ เราต้องนำเอาตัวแปรมารองรับ Result ที่เกิดจากการ Execute นี้ครับ โดยเราสามารถนำเอาตัวแปรมารองรับได้แบบนี้ครับ
var row = db.execute(sql);
โดยตัวแปร row นี้จะอยู่ในรูปแบบ Class ที่มีชื่อว่า ResultSet ครับ โดยเจ้า ResultSet จะมี  Property ต่าง ๆ ดังนี้ครับ
  • fieldCount เอาไว้ตรวจสอบจำนวนของ Field ที่ถูก Selete ขึ้นมา
  • rowCount เอาไว้ตรวจสอบจำนวน Row ที่ถูก Select ขึ้นมา
  • validRow เอาตรวจสอบว่า Row ปัจจุบันนั้นเป็น EOF หรือไม่
หลังจากที่เราได้รู้จักกับ Class ResultSet ไปแล้ว ก็มาต่อกันเลยดีกว่าหลังจากที่ทำการ  execute ไปแล้วเราก็ต้องมาทำการตรวจสอบ ความถูกต้องของ row ก่อนจากน้นก็ทำการนำข้อมูลที่ได้ใส่ลงไปใน Array เพื่อนำข้อมูลที่ได้ไปใช้งานต่อครับ อย่าลืมปิด  row ด้วยนะครับ ไม่อย่างนั้น memory เต็มแน่ ๆ ครับ
var data = [];
while(row.isValidRow())
{
data.push({id : rows.field(0),name : rows.field(1)});
row.next();
}
row.close();

จากนั้นก็ทำการ ปิด Connection ครับ โดยคำสั่ง 
db.close();

เป็นอย่างไรกันบ้างครับกับการทำงานกับ Database SQLite นี้ ในบทความต่อ ๆ ไปนั้น จะเป็นเรื่องราวส่วนไหนของ Titanium Studio ติดตามกันต่อนะครับ

0 ความคิดเห็น:

โพสต์ความคิดเห็น