Nine MVP's Blog

03/06/2010

[Article] Database Series : ทดสอบใช้ SQLite 3 กับ .NET Application (Using Sqlite 3 with .NET Application)

Filed under: Database — Nine MVP @ 12:19 pm

Agenda :

  • Database Series : ทดสอบใช้ SQLite 3 กับ .NET Application (Using SQLite 3 with .NET Application)
  • Database Series : มารู้จักกับ OODB กันเถอะ next…

Tools

  1. Visual Studio 2010/2008 ตัวใดก็ได้ใช้ได้เหมือนกัน
  2. SQLite3 Precompiled Library – Database Command-Line เลือกเอา for windows http://www.sqlite.org/sqlite-3_6_23_1.zip
  3. System.Data.SQLite .NET Data Provider (Support VS2008/VS2010) กดเพื่อ download ที่นี่
  4. SQLite Expert Personal Edition (Free) เอาไว้จัดการดาต้าเบสแบบ GUI กดเพื่อ download ที่นี่

Introduce

พอดีมีถามตอบประเด็นในกระทู้ ก็เลยเอ๊ะ!! เจ้า SQLite หากจะใช้งาน Embedded DB ตัวนี้ ต้องทำอย่างไรบ้างน๊ออ เนื่องจากความสามารถของเจ้า SQLite นี้มีชื่อเสียงระบือไกลไม่ต่างกับเจ้า MySql (เป็นที่กล่าวขานกันได้ด้านดี) บทความนี้เป็นเพียงพื้นฐานแนะนำการใช้งานเท่านั้น เพราะผู้เขียนก็ขอทดสอบเพียงแค่นี้

SQLite Embedded Database

ต้องขอบอกว่า SQLite เหมาะกับงานเล็ก ส่วนมากเหมาะจะเอาไปฝังไว้กับพวกอุปกรณ์ hand held ต่าง ๆ   หรือจะทำเป็นดาต้าเบสขนาดย่อม ๆ สำหรับเก็บข้อมูลที่ฝั่ง client ก็ดี ซึ่ง SQLite คือEmbedded Database เป็นระบบ File System ไม่ต้องติดตั้ง ไม่ต้องสตาร์ทเซอร์วิสใดๆ ขึ้นมาทำงาน  รองรับมาตรฐาน SQL-92   มีความรวดเร็วในการทำงานสูง กินเมมโมรี่ต่ำ สามารถทำงานได้หลายแพลทฟอร์ม รองรับการทำ Transaction ไม่ต้องตั้งค่ากำหนดค่าการทำงานอะไร เริ่มต้นก็สร้าง Database/ Table ใช้งานได้เลย

Basic SQLite

1. หลังจากได้ดาวน์โหลดเจ้า Command-Line ในหัวข้อ Tools –> 2. สำหรับสร้าง Database สร้าง Table มาแล้วให้ทำการแตก zip ออกมาจะได้ sqlite3.exe

2. วิธีการใช้งาน ก็ให้เปิด command ขึ้นมาใช้งานโดยไปที่ Start –> Run –> พิมพ์ Cmd กด Enter จากนั้นก็ Dir ไปยัง folder ที่แตกไฟล์ในข้อ 1 ไว้

ดังภาพของผู้เขียนแตก sqlite3.exe ไว้ใน folder SQLiteTest ก็จะใช้คำสั่ง  >Dir SQLiteTest  เข้าไปยังโฟลเดอร์ดังภาพ

3. สร้าง Database แสนง่ายด้วยคำสั่ง C:\SQLiteTest>SQLite3  Customer.db

จะได้คำสั่งรอเตรียมพร้อมสำหรับการสร้าง Table ดังภาพ

4. มาทดลองสร้างเทเบิ้ล และคำสั่ง CRUD พื้นฐานกันดูครับ พิมพ์สคริปเข้าไปตรง ๆ จบสคริปด้วย “;”

    4.1  เปิดการใช้งาน Foreign key ด้วยคำสั่ง

>PRAGMA FOREIGN_KEYS = ON;

จากนั้นพิมพ์ script ตามนี้เพื่อสร้างเทเบิ้ลสำหรับ Customer table และ Address table ซึ่งมี Foreign Key ผูกกันไว้

 

    4.2 ทดสอบคำสั่ง INSERT

ทำการ insert data ลง customer table

ทำการ insert data ลง address table

    4.3 ทดสอบคำสั่ง Select ในแบบต่าง ๆ

Select * from table

Select with Inner Join

 

    4.4 ทดสอบคำสั่ง Update

 

    4.5 ทดสอบคำสั่ง Delete

เมื่อเสร็จสิ้นการใช้งาน ก็พิมพ์คำสั่ง  >.quit เพื่อออกจากการใช้งาน  และเมื่อลองกลับไปดูในโฟลเดอร์ SQLiteTest จะพบไฟล์ customer.db ปรากฎอยู่ดังภาพ

SQLite Database Management Tools

เพื่อความง่ายในการจัดการโครงสร้างและแก้ไขข้อมูลต่าง หลาย ๆ ท่านนิยมที่จะใช้ GUI tool ตามแต่ถนัดของแต่ละท่าน ซึ่งของฟรีมีให้ใช้เยอะมากครับ ไม่ว่าจะเป็นWeb Tool, Application Tool, command-line tool ในหัวข้อนี้ขอแนะนำตัวนี้ครับ SQLite Expert Personal Edition เพียงพอสำหรับใช้พัฒนาและทดสอบครับ ใช้งานง่ายด้วยสิ

   

 

SQLite Database Driver And Test Drive

สำหรับวิธีการเขียนโปรแกรมติดต่อกับ SQLite นั้น มีหลายวิธีเช่นกันทั้ง C/C++, TCL , ODBC, JDBC, ADO.NET ครบทุกค่าย แต่ผู้เขียนได้ลองค้นหา ADO.NET Data Provider สำหรับใช้งานเจ้า SQLite ปรากฎว่าพบกับ SQLite.NET ADO.NET Provider ใน version 1.0.66.0 นี้จะทำงานกับ VS2008/VS2010 ได้ โดย support ทั้ง Typed DataSet Designer, Entity Framework (ยังทำงานไม่ดีนัก)  จึงได้นำมาทดลองใช้งานในบทความนี้

ให้ดาวน์โหลดและทำการติดตั้งได้เลยครับ จากนั้นเปิด Visual Studio ขึ้นมาเพื่อทดสอบเขียนโค้ดเพื่อทำงานกับ Customer.db ที่เราสร้างไว้ในขั้นตอนก่อนหน้านี้

ซึ่งเข้าไปเอา Driver ได้ที่นี่ C:\Program Files (x86)\SQLite.NET\bin\System.Data.SQLite.dll 

ดูรูปแบบของ connection string ได้ที่นี่ http://www.connectionstrings.com/sqlite  ในส่วน sqlite.net

จากนั้นก็เขียน Code ติดต่อ Database ตามปกติ

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SQLite;

namespace SQLiteTester
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string constr = @"data source=Customer.db";  //กรณีโปรแกรม exe อยู่ folder เดียวกับ customer.db

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = GetCustomerData().Tables[0];
        }

        public DataSet GetCustomerData()
        {
            using (var conn = new SQLiteConnection(constr))
            {
                var ds = new DataSet();
                using (var da = new SQLiteDataAdapter(
                    "select * from customer c inner join address a on c.id = a.customer_id", conn))
                {
                    da.Fill(ds, "CustomerData");
                    return ds;
                }
            }
        }
    }
}

 

ผลลัพธ์เมื่อกด RUN (F5)

 

ปล. สำหรับภาษาไทยให้ใช้พวก NVARCHAR, NCHAR จะรองรับ unicode language ได้

 


สามารถ download source code ได้ที่นี่

Code Example Download Here!!

 

Chalermpon Areepong Nine (นาย)

Microsoft MVP Thailand ASP.NET

Greatfriends.biz Community Leader

 

Email : nine_biz-talk.net at hotmail dot com

Blog : http://nine-biztalk-net.spaces.live.com/blog

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: