Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

แนะนำการใช้ฐานข้อมูล SQLite กับ Lazarus

Posted on 30/10/2009

ข้อดีของ SQLite

  • พัฒนาโดย D. Richard Hipp ด้วยภาษา C จำนวนโค๊ดรวมๆแล้วประมาณสามหมื่นกว่าบรรทัด ซึ่งผู้พัฒนาได้รับคำชมว่าเป็นผู้ที่เข้าใจในวิทยาการด้านคอมพิวเตอร์อย่างลึกซึ้ง
  • สำหรับ SQLite น่าจะเป็นฐานข้อมูลที่นิยมใช้กันมากที่สุดในโลก เนื่องจาก เล็ก เร็ว แรง และที่สำคัญมากคือ เสถียร และข้อดีอีกที่ไม่พูดไม่ได้คือ ฟรีและ cross-platform เป็นฐานข้อมูลที่จัดเก็บในไฟล์เดียว ไม่ต้องมีฝั่ง Server ไม่ต้องตั้งค่าใดๆให้ยุ่งยาก
  • สามารถใช้ภาษาโปรแกรมได้เกือบทุกภาษาในโลกนี้ โดยเฉพาะ Lazarus จะมี component ที่ติดตั้งมาให้พร้อมใช้งานได้เลย

สถานการณ์ที่เหมาะและไม่เหมาะสำหรับ SQLite

  • ถ้าใช้เป็นฐานข้อมูลสำหรับ website ที่คนเข้าไม่มากนักก็ใช้ได้ดี หรือเป็นฐานข้อมูลสำหรับโปรแกรมสำหรับเครื่อง PDA ก็สะดวกเพราะมีขนาดเล็ก สำหรับความคิดของผมแล้วฐานข้อมูลไหนก็ตามที่ใช้ Microsoft Access ใช้ SQLite แทนได้ทั้งนั้น แถมดีกว่าทุกๆอย่าง
  • สถานการณ์ที่ไม่เหมาะได้แก่โปรแกรม Client/Server ที่ระบบข้อมูลมีการส่งผ่านข้อมูลสูงมาก เช่น website ที่มีคนเข้ามาก ควรหันไปใช้ RDBMS ตัวใหญ่ๆจะดีกว่าเช่น MySQL, MS SQL

Download และ ติดตั้ง

  • สำหรับ windows ไปดาวน์โหลดไบนารีได้ที่ http://www.sqlitedll.org/sqlite-3_6_19.zip (ขณะที่เขียน blog นี้เป็น version 3.6.19) เมื่อแตกไฟล์ zip ออกมาจะได้ sqlite3.dll และไฟล์  sqlite3.def  ให้ copy ไปไว้ที่ c:\windows\systems32 หรือ copy ไปไว้ที่โฟลเดอร์ของโปรแกรมที่กำลังพัฒนาด้วย lazarus
  • ถ้าต้องการ tools สำหรับ admin ใช้บน command line เพื่อจัดการฐานข้อมูลก็ดาวน์โหลดได้ที่ http://www.sqlite.org/sqlite-3_6_19.zip
  • สำหรับ Linux ที่ผมใช้อยู่คือ Ubuntu และ PCLinuxOS ใช้คำสั่งเดียวกันคือ

[sourcecode language=”bash”]$ sudo apt-get install sqlite[/sourcecode]

สุดยอด Admin Tools สำหรับ SQLite บนวินโดส์

  • ลองมาหลายอย่างแล้วไม่มี tools ตัวไหนดีเท่ากับตัวนี้ ชื่อโปรแกรมก็คือ SQLite Administrator สมกับที่ผู้พัฒนาเรียกโปรแกรมเขาว่า power tool สามารถออกแบบ สร้าง บริหารฐานข้อมูล SQLite ได้
  • ดาวน์โหลดได้ที่ http://download.orbmu2k.de/files/sqliteadmin.zip
  • โปรแกรมมีขนาดเล็กไม่ต้องติดตั้ง unzip ไปวางไว้ตรงโฟลเดอร์ไหนก็ได้ มารันโปรแกรมกันดู
sqliteadmin1

เริ่มต้นสร้างฐานข้อมูลด้วย SQLite Administrator

  • การสร้างฐานข้อมูล SQLite ใหม่สามารถทำได้หลายวิธี วิธีที่ยากกว่า(แต่ก็ไม่ยากเท่าไหร่) ก็คือสร้างด้วยโค๊ด ที่เราสนใจคือสร้างด้วย Lazarus โดยเรียกใช้ผ่านภาษา sql ส่วนวิธีที่ง่ายกว่า ก้สร้างด้วยโปรแกรม SQLite Administrator ที่แนะนำกันนี้แหละ
  • ตัวอย่างที่จะแนะนำกันได้แก่สร้างฐานข้อมูลเพื่อเก็บรูปทรงรีเพื่อมาใช้แทนยูนิตของ Lazarus ที่ผมเสนอไปหลายตอนแล้วคือ GeoEllipsoids (geoellipsoids.pas) ผมจะเริ่มจาก text file (.csv) ชื่อไฟล์ Ellipsoids.csv ที่เก็บรูปทรงรีดังลิสต์ด้านล่าง (ถ้าผู้อ่านสนใจก็ลอง copy ไปวางที่ text editor แล้วเซฟชื่อเป็น ellipsoids.csv)

Airy 1830,AA,6377563.396,6356256.909,299.3249646
Modified Airy,AM,6377340.189,6356034.448,299.3249646
Australian National,AN,6378160,6356774.719,298.25
Bessel 1841(Namibia),BN,6377483.865,6356165.383,299.1528128
Bessel 1841,BR,6377397.155,6356078.963,299.1528128
Clarke 1866,CC,6378206.4,6356583.8,294.9786982
Clarke 1880,CD,6378249.145,6356514.87,293.465
Everest  1830,EA,6377276.345,6356075.413,300.8017
Everest (E. Malasia & Brunei),EB,6377298.556,6356097.55,300.8017
Everest 1956,EC,6377301.243,6356100.228,300.8017
Everest 1969,ED,6377295.664,6356094.668,300.8017
Everest 1948,EE,6377304.063,6356103.039,300.8017
Everest (Pakistan),EF,6377309.613,6356109.571,300.8017
Mod. Fischer 1960(South Asia),FA,6378155,6356773.32,298.3
Helmert 1906,HE,6378200,6356818.17,298.3
Hough 1960,HO,6378270,6356794.343,297
Indonesian 1974,ID,6378160,6356774.504,298.247
International 1924,IN,6378388,6356911.946,297
Krassovsky 1940,KA,6378245,6356863.019,298.3
GRS 80,RF,6378137,6356752.314,298.2572221
South American 1969,SA,6378160,6356774.719,298.25
WGS 72,WD,6378135,6356750.52,298.26
WGS 84,WE,6378137,6356752.314,298.2572236

  • ที่เมนเมนูของโปรแกรมคลิกที่ Database > New… หรือคลิกที่ icon “Create Database” ก็ได้ ป้อนชื่อฐานข้อมูลเป็น Datums.s3db แล้วเซฟไว้

สร้าง Table ใหม่

  • ตอนนี้เราได้ฐานข้อมูลมาแล้วหนึ่งไฟล์ ต่อไปเราจะสร้าง Table เพื่อเก็บรูปทรงรีจะตั้งชื่อ Table นี้ว่า Ellipsoids คลิกขวาที่ Tables > Create Table ดังรูปด้านล่าง
sqliteadmin3
  • จะเห็น dialog ขึ้นมา ป้อนชื่อ table แล้วคลิกที่ Add field ป้อนชื่อ field , field type ดังรูปด้านล่าง
sqliteadmin4
  • ทำการ Add field เข้าไปอีกให้ครบ
sqliteadmin5
  • จากรูปด้านบนผมตั้งให้ field ชื่อ Code ของทรงรี เป็น primary key และไม่ซ้ำกัน ต่อไปเราจะ import หรือปั๊มข้อมูลเข้า table ซึ่งยังว่างๆในตอนนี้

การปั๊มข้อมูลเข้า Table

  • ที่เมนูหลักคลิกที่ Data > Import data… จะเห็น dialog เป็นดังรูปด้านล่าง
sqliteadmin6
  • จากรูปด้านบน จุดที่ 1 คลิกที่ Open File เลือกไฟล์ ellipsoids.csv ที่เราเตรียมไว้ โปรแกรมจะถามว่าใช้อะไรเป็นเครื่องหมายคั่น ให้พิมพ์เครื่องหมายจุลภาค(comma) และถามต่อว่าไฟล์ ellipsoids.csv มีหัวไฟล์ (header column) ตอบ No ดูที่จุดที่ 2 เลือก Target Table เลือกตาราง Ellipsoids จุดที่ 3 ทำการ map column ของไฟล์ให้เข้ากับ field ของฐานข้อมูลดังรูปด้านบน จุดที่ 4 คลิกที่ Import Data เพื่อนำข้อมูลเข้าได้เลย
  • ตรวจสอบข้อมูลได้ ดูรูปด้านล่างประกอบ
sqliteadmin7
  • จากรูปด้านบนตรงแท็ปด้านขวามือจะเห็น SQL Query คลิกเพื่อลองทดสอบการ query พิมพ์ sql  ดังรูปด้านล่าง
sqliteadmin8
  • แล้วคลิกที่เมนูหลัก Query > Execute with Result คลิกไปที่แท็ป Result เพื่อดูผลลัพธ์ดังรูปด้านล่าง
sqliteadmin9

การใช้เครื่องมือ Adimin ที่เป็น command line

  • สำหรับความรู้สึกผมแล้วการใช้ command line ในบางครั้งกลับสะดวกกว่าโปรแกรมที่ใช้ GUI เสียอีก ตัวอย่างก็หนีไม่พ้นใน linux การใช้ command line เป็นเรื่องสะดวกมากๆ เช่นคำสั่ง ls, dmesg, df, env, lspci, lsmod อะไรประมาณนี้ การใช้เครื่องมือ admin ที่แนะนำให้ดาวน์โหลดไปตอนต้นคือ sqlite3.exe ผมจะแนะนำการใช้คร่าวๆ ผม copy ไปไว้ที่โฟลเดอร์ c:\sqlite3 ถ้าใช้ windows กดคีย์บอร์ด ALT + R พิมพ์คำสั่ง cmd กด Enter แล้วเรียกใช้คำสั่งดังรูปด้านล่างเพื่อเรียกโปรแกรม
  • cmd1
    ผมเปิดฐานข้อมูลด้วยคำสั่ง sqlite3 e:\sourcecodes\lazarus\sqliteproj1\datums.s3db ถ้าสงสัยหรือจำคำสั่งไม่ได้ก็ให้พิมพ์ .help เข้าไป
  • ผมใช้คำสั่ง .databases เพื่อดูว่า database อะไรที่เราใช้งานอยู่ ตามด้วย .header ON เพื่อให้แสดงคอลัมภ์ชื่อฟิลด์ และ .show เพื่อแสดงพารามิเตอร์ แล้วลอง query  ดูด้วย syntax “select” ดังรูปด้านล่าง
  • cmd2
    จากรูปด้านบนจะเห็นผลลัพธ์ของ sql  ด้วย syntax “select” ที่จริงยังมีคำสั่งอีกมากที่ทำได้ในสภาวะ command line แต่ตอนนี้ขอพอแค่นี้ก่อน ตอนหน้าจะลงลึกไปอีกนิดว่าจะนำ SQLite มาใช้กับ Lazarus อย่างไร

Related

5 thoughts on “แนะนำการใช้ฐานข้อมูล SQLite กับ Lazarus”

  1. Pingback: การใช้ฐานข้อมูล SQLite กับ Lazarus ในเบื้องต้น (ตอนที่ 1) « Prajuab Riabroy's Blog
  2. pkgis2007 says:
    19/02/2010 at 14:03

    สำหรับงานด้าน GIS พวกที่เก็บค่าพิกัด มากๆ หรือประมวลผลความสัมพันธ์เชิงพื้นที่
    ผมใช้ spatial sqlite เป็นส่วนขยาย รองรับงานด้าน mapping โดยตรงมีฟังก์ชั่นเยอะและจัดการข้อมูลใหญ่ เช่นการทำ index พวก gist index rtree index ให้ด้วยครับ ที่สำคัญต่อกับโปรแกรมแสดงผลแผนที่ได้ทันทีเลย

    http://emap.wordpress.com/2009/03/22/spatiallitegis-module-on-sqllite/

    Reply
    1. prajuab riabroy says:
      19/02/2010 at 17:23

      เห็น plug in ใน qgis ที่ support spatialite เดี๋ยวผมจะลองศึกษาดูครับ

      Reply
  3. tung55 says:
    10/05/2011 at 19:27

    อยากทราบว่าใส่ foreign key ยังไงค่ะ ยกตัวอย่าง พร้อมภาพประกอบด้วยน่ะค่ะ

    ขอบคุณไว้ถ่วงหน้าเลย ขอถ่วนด้วยน่ะค่ะเพราะทำ project อยู่ค่ะ จาเปนพระคุณยิ่ง

    Reply
  4. tung55 says:
    10/05/2011 at 19:35

    อีกอย่างค่ะ ความสัมพันธ์ด้วยค่ะ เช่น 1 to 1 , 1 to many ค่ะ ขอบคุงมาก

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

August 2026
M T W T F S S
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« Jul    

Blog Stats

  • 885,489 hits

Recent Posts

  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ
  • เมื่อ AI กลายเป็นพิษด้วยอัตตา
  • คอมไพล์ PROJ 9.6.0 สำหรับแอนดรอยด์ แก้ปัญหาเพิ่มขนาด page size 16KB ตามกฎใหม่ของกูเกิ้ล
  • เครื่องมือช่วยออกแบบเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ ด้วย LDP Companion เพื่อนคู่คิดมิตรคู่ใจ (#กำลังพัฒนา #Rust #Slint)
  • #Update แก้บั๊กหลุมดำ Surveyor Pocket Tools
  • ปฐมฤกษ์โปรแกรมเดสก์ท็อปภาษา Rust ด้วย Slint
  • การตั้ง Heading จาก RTK GNSS สองเครื่องใน Hypack
  • วิธีการออกแบบและรังวัดโครงข่าย GNSS ฉบับคนเดินถนน (ตอนที่ 3)

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 118 other subscribers

Archives

  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • 63.013_Sor Saimai on การออกแบบเส้นโครงแผนที่ความเพี้ยนต่ำ (Low Distortion Projection) ตอนที่ 2 (กรณีศึกษาออกแบบเส้นโครงแผนที่ความเพี้ยนต่ำสำหรับกรุงเทพมหานครและปริมณฑล)
  • priabroy on แปลงรูปแบบไฟล์แบบจำลองความสูงจีออยด์ TGM2017 เป็น GGF เพื่อใช้ในโปรแกรม Trimble Business Center
  • priabroy on แปลงรูปแบบไฟล์แบบจำลองความสูงจีออยด์ TGM2017 เป็น GGF เพื่อใช้ในโปรแกรม Trimble Business Center
  • Thanom Sriworasa on แปลงรูปแบบไฟล์แบบจำลองความสูงจีออยด์ TGM2017 เป็น GGF เพื่อใช้ในโปรแกรม Trimble Business Center
  • priabroy on ติดปีกเครื่องคิดเลขเทพ Casio fx 9860G II SD ด้วยโปรแกรมภาษาซีบน AddIn ตอนที่ 7 โปรแกรมคำนวณโค้งราบ (Horizontal Curve)
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme