Home / Developer  / iOS Developer ตอนที่ 10 การดึงข้อมูล SQLite มาแสดงผลบน iPhone Apps

iOS Developer ตอนที่ 10 การดึงข้อมูล SQLite มาแสดงผลบน iPhone Apps

ดึงข้อมูล SQLite มาแสดงผลบน iPhone Apps

เทคนิคการใช้ SQLite มาพัฒนาร่วมในการดึงข้อมูลของจากฐานข้อมูลมาบนแอพพลิเคชันบน iPhone ของเราเบื้องต้น เทคนิคสำหรับนักพัฒนา iPhone Apps Development มือใหม่สำหรับแอพพลิเคชันบนสมาร์ทโฟนที่มีข้อมูลปริมาณมาก หากว่าเราทำการอัดข้อมูลเก็บไว้ใน คำสั่งหรือฟังก์ชันก็จะทำให้ขนาดของแอพพลิเคชันของเรามีขนาดใหญ่เกินความจำเป็น จึงต้องมีจัดเก็บข้อมูลเก็บไว้ในฐานข้อมูล จากบทเรียนก่อนหน้าที่เป็นการติดตั้ง SQLite เบื้องต้นลงบนเครื่องคอมพิวเตอร์ และวิธีใช้งาน Extension หรือส่วนเสริมของ FireFox อย่าง SQLite Manager แล้ว คราวนี้จะเป็นการเขียนคำสั่งเบื้องต้นสำหรับดึงข้อมูลจาก ฐานข้อมูลพร้อมทั้งคำสั่ง SQL เบื้องต้นมาช่วยเหลือ

ดึงข้อมูล SQLite มาแสดงผลบน iPhone Apps

ดึงข้อมูล SQLite มาแสดงผลบน iPhone Apps

ก่อนอื่นให้ไปสร้าง ฐานข้อมูล SQLite ขึ้นมาตั้งชื่อว่า “student” จาก SQLite Manager บน FireFox

สร้างฐานข้อมูลว่า student ขึ้นมา

สร้างฐานข้อมูลว่า student ขึ้นมา

กดที่ไอคอน Create Table เพื่อสร้าง ตารางข้อมูลที่ชื่อว่า “student” อีกครั้ง เพื่อเก็บข้อมูลของรายชื่อนักเรียนเป็นข้อมูลตัวอย่าง

ไปที่เมนู Table->Create Table เพื่อสร้างตารางว่า student

ไปที่เมนู Table->Create Table เพื่อสร้างตารางว่า student

ให้เข้าไปสร้าง Attribute หรือ Column บนตาราง “student” โดยตัวอย่างที่กำหนดไว้คือ “name” ประกาศรูปแบบเป็น “VARCHAR” เพื่อไว้ใช้เก็บรายชื่อ และนามสกุลของนักเรียน ตามด้วย “email” ประกาศเป็นรูปแบบว่า “VARCHAR” เช่นกันสำหรับเก็บข้อมูล Email ของนักเรียน และช่องสุดท้ายคือ “profiles” ประกาศรูปแบบเป็น “TEXT” เช่นกันไว้เก็บประวัติของนักเรียน หรือ ใช้คำสั่ง SQL ในช่อง Execute SQL ตามคำสั่งด้านล่างก็ได้

ทำการสร้าง Attribute หรือ Columns ภายใน ตาราง "student”

ทำการสร้าง Attribute หรือ Columns ภายใน ตาราง “student”

เมื่อสร้างตารางของ “student” เป็นที่เรียบร้อยแล้วให้ลองใส่ข้อมูลตัวอย่างลงไป สัก 4-5 รายชื่อ ให้เรียบร้อย ซึ่งตัวอย่างที่เห็นคือ

รายชื่อ "student”

รายชื่อ “student”

จะพบว่าข้อมูล “student” นั้นมีข้อมูลนักเรียนปรากฏอยู่ ตามแถวข้อมูลที่เรากรอกเข้าไปต่อไปให้เราสร้าง Project ใหม่ขึ้นมา

ทำการ New Project ใหม่ขึ้นมาเป็น Single View Application

ทำการ New Project ใหม่ขึ้นมาเป็น Single View Application

หลังจากที่สร้าง New Project ไปแล้วให้หยุดที่หน้า Project Detail ก่อนอย่าเพิ่งเปลี่ยนหรือปิดไปไหน เพราะเราจะต้องทำการเพิ่ม Framework ของ SQLite ลงไปใน Project ของเรา

หน้า Project Detail

หน้า Project Detail

เลือกไปที่แถบ Build Phases ของตัว Project เพื่อทำการเพิ่ม Library ของ SQLite ลงไป ในช่อง “Link Binary With Libraries” ที่ปุ่ม “+” บริเวณด้านล่างซ้ายของแถบนี้

เปิดไปที่แถบ Build Phases เลือกที่ปุ่ม "+” ที่อยู่มุมล่างซ้ายของแถบนี้

เปิดไปที่แถบ Build Phases เลือกที่ปุ่ม “+” ที่อยู่มุมล่างซ้ายของแถบนี้

กด “+” แล้วทำการค้นหา โดยใส่คำค้นหาว่า “SQL” จะพบไฟล์ libsqlite3.dylib และ libsqlite3.0.dylib ให้เลือก libsqlite3.0.dilib ลงไป ใน Project

เพิ่ม Libraries ลงไป

เพิ่ม Libraries ลงไป

มีไฟล์ libsqlite3.0.dylib ลงไปใน Project

มีไฟล์ libsqlite3.0.dylib ลงไปใน Project

ไปที่ไฟล์ AppDelegate.h ทำการประกาศ หน้า ViewController เป็น Class ตัวใหม่ขึ้นมาก่อนโดยคำสั่ง

ทำการประกาศตัวแปล เพิ่มเติมในไฟล์ DetailViewController.h โดยเรียก Libraries ของ SQLite เข้ามาในส่วนนี้

สร้างฟังก์ชันสำหรับ ทำการเก็บข้อมูลจาก SQLite ขึ้นมาด้านล่างก่อน @end

เป็นการเตรียมพร้อมการดึงข้อมูลจากไฟล์ SQLite ลงไปในตัวแอพพลิเคชัน ต่อจากนั้นให้นำไฟล์ SQLite ที่เราสร้างขึ้นมาที่ชื่อว่า student.sqlite มาไว้ใน Project โดยการเพิ่ม

Add File ใหม่เข้าไปใน Project นั่นคือไฟล์ student.sqlite

Add File ใหม่เข้าไปใน Project นั่นคือไฟล์ student.sqlite

ไฟล์ student.sqlite ไปอยู่ใน Project แล้ว

ไฟล์ student.sqlite ไปอยู่ใน Project แล้ว

ไปที่ไฟล์ DatabaseViewController.m ทำการเพิ่มคำสั่ง initDatabase เข้าไปในไฟล์ เพื่ออ่านค่าข้อมูลจากฐานข้อมูล

เมื่อเพิ่มคำสั่งดังกล่าวลงไปแล้ว ให้ไปเรียกใช้งานฟังก์ชันนี้ที่ ViewDidLoad อีกที

เป็นการเก็บที่อยู่ของไฟล์ฐานข้อมูล นั่นคือไฟล์ student.sqliteไปฝากไว้ที่ตัวแปร paths แล้วทำการเขียนข้อมูลโดยคำสั่ง writableDBPath ลงในไฟล์ student.sqlite ทำการเชื่อมต่อ และตรวจสอบว่าแอพพลิเคชันเชื่อมต่อได้หรือไม่ บนตัวแปร defaultDBPath เพื่อเรียกไฟล์ฐานข้อมูลนี้

ต่อมาเป็นการใช้คำสั่งในการเรียกอ่านข้อมูลมาเก็บไว้ในตัวแปรชุดหนึ่ง ให้ทำการเพิ่มฟังก์ชันใหม่เข้าไปในไฟล์ DatabasesViewController.h อีกครั้งด้วย

เมื่อสร้างฟังก์ชันสำหรับ เรียกข้อมูลจากฐานข้อมูลมาแล้วให้เข้าไปเพิ่ม ฟังก์ชันการทำงานที่ไฟล์ DatabasesViewController.m อีกครั้ง

หากสังเกตจะเห็นว่า คำสั่ง SQL นั้นผมจะทำการเรียกข้อมูล เพียงแถวเดียว จากเงื่อนไข คือ แถวที่ 1 หรือ rowid=’1′ ผ่านคำสั่ง ภาษา SQL ว่า

สิ่งที่ได้ก็คือ ชุดข้อมูลของ “Banyapon Poolsawasd” และอีเมล “daydevthailand@gmail.com” เป็นต้นครับ

สร้างคำสั่งให้ เรียกข้อมูลจากฐานข้อมูลทันทีที่ ViewDidLoad โดยเพิ่มคำสั่งลงไปว่า

ลองทำการ “Run” ตัวแอพพลิเคชันของคุณดู หน้าจอของ Simulator ตัว iPhone หรือ iPad จะไม่มีผลลัพธ์อะไร ให้กดปุ่ม Command พร้อมกับปุ่ม Shift ค้างไว้แล้วกดแป้น “c” จะมี Target Output ปรากฏขึ้นสังเกตว่าผลลัพธ์จะเรียกข้อมูลขึ้นมาให้ตามตัวอย่างข้างล่าง

หน้าต่าง Output ของแอพพลิเคชันนี้

หน้าต่าง Output ของแอพพลิเคชันนี้

สังเกตว่าผมจะเรียกข้อมูลจากฐานข้อมูล student ในส่วนของ Columns ชื่อ “name” และ “email” ออกมาซึ่งเป็นไปตามเงื่อนไขแรก หากเปลี่ยน rowid=’2′ ก็จะได้ข้อมูลแตกต่างออกไป

ให้ทำการสร้าง UILabel ขึ้นมาหนึ่งตัว สร้าง IBOutlet ขึ้นมาตั้งชื่อว่า labelStudent จะด้วยการลากวาง UI หรือพมพ์คำสั่งก็ได้

และอย่าลืม Synthesize ตัวแปรของ UILabel บนไฟล์ DatabasesViewController.m อีกครั้ง

กลับไปเพิ่มคำสั่งเล็กๆ น้อยในฟังก์ชัน getStudent() อีกครั้งให้ UILabel ของเราดึงข้อมูลขึ้นมา

ลองทำการ “Run” ตัวแอพพลิเคชันของเราดูอีกครั้งจะพบว่า แอพพลิเคชันของเราจะแสดงชื่อของนักเรียนจากฐานข้อมูล student ซึ่งเป็นข้อมูลชุดแรกออกมาตามเงื่อนไข

ผลลัพธ์ของแอพพลิเคชัน

ผลลัพธ์ของแอพพลิเคชัน

สิ่งที่ได้จากบทเรียนนี้ : การเชื่อมต่อฐานข้อมูลเบื้องต้น และเรียกข้อมูลขึ้นมาจากคำสั่ง SQL มาแสดงผลในตัวแปร และ UILabel อย่างง่าย

Comments

daydevthailand@gmail.com

<p>อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์<br /> ,ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)</p>

Review overview
2 COMMENTS
  • Chin Bun March 12, 2013

    พี่จบมาจาก ม กรุงเทพหรอครับ.

    • Banyapon Poolsawasd June 19, 2013

      จบตรี ม.หอการค้า
      จบโท พระจอมเกล้าฯ ลาดกระบังครับ

      แต่เป็น อ.พิเศษ ที่ ม.กรุงเทพ

POST A COMMENT

%d bloggers like this: