สอน SQLite ใช้งานฐานข้อมูลแบบออฟไลน์กับ Unity C#
SQLite เป็นระบบฐานข้อมูลที่ทำงานในลักษณะออฟไลน์หรือเป็นฐานข้อมูลที่ถูกเก็บไว้ในเครื่อง client นิยมนำไปใช้สำหรับพัฒนาโมบายแอพพลิเคชั่น เราจะสังเกตุเห็นว่าเวลาที่เราเล่นเกมส์มือถือจะสามารถเล่นได้ทั้งแบบออนไลน์และออฟไลน์ ข้อมูลต่าง ๆ จะถูกเก็บแบบออฟไลน์เมื่อเราเล่นเกมส์แบบไม่เชื่อมต่ออินเตอร์เนต และจะถูกอัพเดทไปที่ฐานข้อมูลบน Server เมื่อเราเชื่อมต่ออินเตอร์เนต
สร้าง Unity2D โปรเจค และฐานข้อมูล SQLite
- 1. สร้างโปรเจค Unity และเลือกไปที่โปรเจคแบบ 2D ตั้งชื่อว่า SQL_lite
- 2. เปิดโปรแกรม Terminal ไปที่โฟลเด้อโปรเจค SQL_lite/Assets และพิมพ์คำสั่ง เพื่อสร้างฐานข้อมูลชื่อว่า test ดังนี้
- 3. ฐานข้อมูลจะยังไม่ถูกสร้าง จนกว่าจะมี table มากกว่า 1 ในฐานข้อมูล ฉะนั้นให้เราพิมพ์คำสั่งเพื่อสร้างตารางดังนี้
1234CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL);
จะเห็นว่ามีไฟล์ฐานข้อมูลชื่อว่า test.db ถูกสร้างขึ้นมาแล้ว อยู่ใน SQL_lite/Assets/test.db
ใช้คำสั่ง insert เพื่อเพิ่มข้อมูลเข้าไปในตาราง COMPANY เขียนคำสั่งดังนี้12INSERT INTO COMPANY (ID,NAME)VALUES (1, 'Witoon Pomipon');
ตัวอย่างคำสั่งในโปรแกรม Terminal
1 |
SQLite3 test.db |
เขียน C# ติดต่อกับฐานข้อมูล SQLite
- 1. ดาวน์โหลดไฟล์ต่าง เพื่อให้สามารถใช้งาน SQLite ได้ที่ http://www.sqlite.org/download.html วางไฟล์ทั้งหมดไว้ในโฟลเด้อ Assets/Plugins
- 2. เปิดโปรแกรม Unity3D และโปรเจค SQL_lite จากนั้นคลิกขวาที่หน้าต่าง Assets เลือกไปที่ Create -> C# Script และตั้งชื่อว่า AppController.cs
- 3. ดับเบิ้ลคลิกที่ไฟล์ AppController.cs ระบบจะเปิดโปรกรม MonoDevelop ขึ้นมาให้ทดลองเขียนโปรแกรมเพื่อติดต่อกับฐานข้อมูล test.db ดังนี้
123456789101112131415161718192021222324252627282930313233343536using UnityEngine;using System.Collections;using System.Data;using Mono.Data.SqliteClient;public class AppController : MonoBehaviour {void Start () {connect();}void connect(){string conn = "URI=file:test.db"; // ชี้ไปที่ฐานข้อมูลIDbConnection dbconn = new SqliteConnection(conn);IDbCommand dbcmd = dbconn.CreateCommand();dbconn.Open(); // เปิดการเชื่อมต่อstring sqlQuery = "SELECT name FROM COMPANY"; // เลือก name จากตาราง COMPANYdbcmd.CommandText = sqlQuery;IDataReader reader = dbcmd.ExecuteReader(); // เริ่ม Executewhile (reader.Read()){string name = reader.GetString(0);Debug.Log("name ="+name); // แสดง name ใน console}reader.Close();reader = null;dbcmd.Dispose();dbcmd = null;dbconn.Close();dbconn = null;}} - 4. จะเห็นว่าเราได้ข้อมูล name จากตาราง COMPANY ที่เรา insert ไว้ก่อนหน้านี้แสดงออกมาทางหน้าต่าง console