Tyrone

New Member
SQLite: Kien thuc cơ bản (Phần 1)

Mặc du blog này chủ yeu viet về SQL Server, tuy nhien trong công việc gan day tui có yeu cau cần nghien cuu một ít lien quan đến các HQTCSDL khác, tim hieu một ít ve SQLite thấy có mot so điều thú vi nen mở thêm mot muc liên quan đến nó, se tranh thủ viết mot vai bài cho nhung ai quan tâm. Thuc su phải nói la SQLite cực kì đơn giản, dễ hiểu, dac biet cho nhung ai đã biet ve một HQTCSDL nao do nhự Access, SQL Server...


Trước hết, ta tim hiểu:

SQLite là gì?

Theo trang sqlite.com, SQLite la mot thư viện thuc thi các chức nang cua một database engine voi đặc diem giong như mot phan mềm portable, khong can cài đặt, khong can cấu hình, khong can server, những diem nay rất khác so voi việc su dung SQL Server hoac Oracle, nhưng no van có transaction de dam bảo tính toan ven và an toan trong quá trình thao tac dữ liệu. Co the so sánh no co một vài diem giong với Access, nhung nhin chung vẫn co nhieu sự khác biệt.


SQLite duoc danh giá là nhanh, tin cay va đặc biệt la lam cho trở nen don giản nhất cho viec học và su dung nó.


Chi tiết ve cac đặc tính của SQLite

1. Zero-Configuration:

Bạn hoan toan không phải thiet laptop bất kỳ mot cau hình nào de co thể su dung SQLite, tat ca những gì ban can là mot file SQLite.exe và chạy.


2. Serverless:

Các HQTCSDL nhu SQL Server, Oracle, Postgre... thường can mot server riêng de trien khai ứng dụng, cài dat database engine, cac may khách se ket nối đến server de xử lý du lieu một cách tập trung. Tuy nhien SQLite không lam viec theo cách nay ma ứng dụng se truy xuất trực tiep vao file database, cac may khách cũng co the truy xuất mot file database SQLite de tren một server thong qua cơ chế chia se và bảo mat file của he dieu hành,người dung nao truy cập duoc vao thư mục va co quyền đọc - ghi thi se có thể doc ghi vào file database SQLite. Tuy nhien sẽ có nhung han chế của ky thuat mà chi tiet ban đọc co the tham khao tai đây.


3. Single Database File: Database do SQLite tao ra là mot file dữ lieu duy nhất. Tất ca chi có thế.

4. Stable Cross-Platform Database File

Bạn co the copy file database SQLite tu he thống này sang he thống khác, tu he thống 32 hay 64 bit, từ phien ban SQLite này sang phien bản khác ma khong cần chuyển đổi , nang cap hệ điều hành, cấu truc he thống hay phai lam lại file database.


5. Compact: Cực kỳ nhỏ gọn.

6. Manifest typing (tạm dịch: kiểu du lieu đặc tả):

Khi bạn dùng SQLite sẽ để ý là số lượng kiểu du lieu của nó rất ít, điều này la mot đặc trưng của nó, bởi trong SQLite, kiểu du lieu là một thuộc tính của chính giá trị được lưu chứ khong phai là thuộc tính của cột lưu giá trị đó. Tuy vậy, cũng có mot vai ràng buộc, là với cột khóa chính kiểu integer thì phải lưu giá trị phải chính xác là kiểu int, ngoài ra SQLite cũng cố gắng chuyển đổi kiểu của giá trị sang kiểu của cột lưu nó khi có thể. Mục đích của việc thiết kế kiểu du lieu như vậy nhằm làm cho nó tin cay va đơn giản hóa viec su dụng, và cũng để dễ tương thích hơn khi su dung với các ngôn ngữ như Tcl hay Python.


7. Variable-length records

Dữ liệu lưu bao nhiều thì hệ thống cấp phát cho bấy nhiêu không gian bộ nhớ cho từng dòng dữ liệu, không cấp phát thừa hay thiếu không gian lưu trữ cho dữ liệu, nhờ đó mà file database trở nên nhỏ gọn và tốc độ xu ly dữ liệu cũng nhanh hơn.


... Và mot so thuộc tính khác, tham khảo chi tiết tại đây: tại đây.

Các bước để su dung SQLite?


Hãy hình dung các bước để su dung SQLite như sau: bạn download mot file zip có chứa SQLite.exe về giải nén vào một thư mục, sau đó mở cmd lên, chuyển đến thu muc chứa SQLite, chạy SQLite.exe và thực hiện các lệnh tạo database, table, insert dữ liệu, select... hoan toan bằng dòng lệnh. Một file chứa database và du lieu sẽ được tao ra vào một thu muc nào đó. Đơn giản chỉ có vậy .


Nếu không thích su dung dòng lệnh, bạn co the sử dụng giao diện đồ họa bằng cách tải SQLite studio hay SQLite Browser về, các ung dung này hoan toan miễn phí, gọn nhẹ, khong can cài đặt, tải về chạy file exe và dùng ngay.


Tính phổ biến?


Theo như giới thiệu thì SQLite là HQTCSDL được triển khai phổ biết nhất trên thế giới, (lý do co the là do được su dung rộng rãi trên các thiết bị di động). Và SQLite la mot hệ quản trị CSDL mã nguồn mở, hoan toan miễn phí.


Một số công ty và sản phẩm su dung SQLite như: Oracle, Bentley, Mozilla ( Firefox), Bloomberg...

Search từ khóa "SQLite and Adroid" cũng cho kết quả rất phong phú.




SQL phù hợp với tình huống nào? Có thay thế được cho SQL Server, Oracle, Postgre... được không?

Trả lời luôn là không.

SQLite phù hợp trong các tình huống sau:


Ứng dụng su dung dạng flat file để lưu trữ dữ liệu: như từ điển, các ung dung nhỏ, lưu cấu hình ứng dụng... Nó mạnh mẽ hơn nhiều ky thuat lưu trữ file thông thường..

Sử dụng trong các thiết bị nhúng: smart phone, PDA và các thiết bị di động rất phù hợp với SQLite.

Các website có khoảng 100 nghìn lượt xem/ ngày, mặc dù về mặt lý thuyết thì SQLite co the đáp ứng gấp 10 lần conn số này.

Là thay thế hoàn hảo cho database dạng file: nhiều ung dung sử dụng fopen(), fread(), fwite() để lưu trữ dữ liệu, SQLite sẽ thay thế hoan toan kỹ thuật đó bằng ky thuat hiện đại hơn, dễ dùng và tin cậy hơn.

Sử dụng làm database tạm để lưu trữ du lieu lấy về từ các database trên SQL server, Oracle...

Làm database demo cho các ung dung lớn, dùng để làm mô hình khái niệm cho ứng dụng.

Dùng cho giảng dạy: để giảng dạy cho nhung người mới làm quen với ngôn ngữ truy vấn SQL.


Ngoài các trường hợp trên, tốt hơn hết là bạn su dung SQL Server, Oracle, PostgreSQL để xây dựng các ựng dụng cho doanh nghiệp.


Phần 2 mời đọc tại đây:
 

Colier

New Member
Ở phan nay cũng là phan cuoi trong loạt bai ve SQLite, tui se xay dựng một ung dung nhỏ nhằm demo viec sử dụng C# voi SQLite. Chúng ta se sử dung thu viện System.Data.SQLite được cung cap sẵn trên trang , bạn tim den mục Precompiled Binaries for .NET download về và cài đặt, chuong trinh sẽ tự dong tich hợp vào phan Toolbox của Visual Studio. Tuy nhiên, ở day sau khi cài đặt, bạn hay tim đến file System.Data.SQLite trong thu muc C:\Program Files\SQLite.NET\bin, copy file nay vao thư mục project tao bởi C#. Cach su dụng thu vien này cuc ky đơn giản neu ban đã làm quen voi ADO.NET.


Chúng ta se sử dụng lai database đã tao ra ở phần 2, ung dung của chúng ta co giao dien nhu sau, no co các chức năng thêm, xóa, sửa vao table tb1 trong database db1 nhu da tạo ra o phần trước:



Bạn tao mot new project tren C# và đặt ten la SQLiteLearning :


Add reference, tim toi file System.Data.SQLite, nho them vào mệnh de thong báo

using System.Data.SQLite như hình sau:



Sau đây la toan bộ mã nguon cua chương trình voi giao diện như trên:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SQLite;


namespace SQLiteLearning

{

public partial class Form1 : Form

{

SQLiteConnection conn = new SQLiteConnection();

SQLiteCommand cmd = new SQLiteCommand();


SQLiteDataAdapter adapter = new SQLiteDataAdapter();


DataTable dt1 = new DataTable();

BindingSource bs = new BindingSource();

public Form1()

{

InitializeComponent();

this.Load += new EventHandler(Form1_Load);

btnLoad.Click += new EventHandler(btnLoad_Click);

btnAddnew.Click += new EventHandler(btnAddnew_Click);

btnSave.Click += new EventHandler(btnSave_Click);

btnRemove.Click += new EventHandler(btnRemove_Click);


}


void btnRemove_Click(object sender, EventArgs e)

{

DataRow dr = ((DataRowView)bs.Current).Row;

cmd.CommandText = "delete from tb1 where ID = " + dr["ID"].ToString();

conn.Open();

cmd.ExecuteNonQuery();

bs.RemoveCurrent();

conn.Close();

}


void btnSave_Click(object sender, EventArgs e)

{

conn.Open();

DataRow dr = (( DataRowView)bs.Current).Row;


// Neu bản ghi da ton tại thì xóa trước, sau do insert dòng da thay đổi vào

cmd.CommandText = "delete from tb1 where ID = " + dr["ID"].ToString();

cmd.ExecuteNonQuery();


cmd.CommandText = "insert into tb1 values(" + dr["ID"].ToString() + ", '" + dr["Name"] + "')";

cmd.ExecuteNonQuery();


conn.Close();

}


void btnAddnew_Click(object sender, EventArgs e)

{

bs.AddNew();

}


void btnLoad_Click(object sender, EventArgs e)

{

LoadData();

}


void Form1_Load(object sender, EventArgs e)

{

LoadData();

}


private void LoadData()

{

cmd.Connection = conn;

adapter.SelectCommand = cmd;

conn.ConnectionString = @"data source=C:\Users\user01\db1.db";

cmd.CommandText = "select * from tb1";

adapter.SelectCommand = cmd;

dt1.Rows.Clear();

adapter.Fill(dt1);

bs.DataSource = dt1;

dataGridView1.DataSource = bs;

}

}

}

-----------------------------------------------------------------------------

Nếu quý vị có bất kỳ chia sẻ gì, xin vui lòng để lại comment, tác giả hoan nghênh và đón nhận mọi ý kiến xây dựng và góp ý.

( )
 

Các chủ đề có liên quan khác

Top