Hướng dẫn dùng sqlite3 installation trong PHP

SQLite là hệ quản trị CSDL nhỏ gọn, hoàn chỉnh, có thể cài đặt và dễ dàng sử dụng trong các dự án phần mềm. Trong bài viết này mình sẽ hướng dẫn các bạn kết nối tới SQLite bằng ngôn ngữ lập trình PHP

Nội dung chính

  • Tạo cơ sở dữ liệu sqlite
  • Kết nối với Cơ sở dữ liệu sqlite
  • Thực thi các câu lệnh
  • SQLite với PHP
  • SQLite với Java Android
  • SQLite với .NET
  • SQLite với C++ trong VS
  • SQLiteStudio - Giao diện trực quan làm việc với SQLite

VD: trong SQLite ta có bảng CSDL user như sau:

Hướng dẫn dùng sqlite3 installation trong PHP

Đoạn source code sau đây sẽ kết nối tới SQLite và thực hiện in dữ liệu của bảng User

query("SELECT * FROM users");

    // If have data
    if ($rows)
    {
        // Loop and output data
        foreach ($rows as $row)
        {
            print_r($row);
        }
    }
    else
    {
        echo 'No data';
    }
}
catch(Exception $e)
{
    // Print Error
    echo $e->getMessage();
}

Kết quả: 

Nguồn: vinasupport.com

Tạo cơ sở dữ liệu sqlite

Bạn có hai khả năng để đạt được điều đó:

  1. Viết câu lệnh DDL (CREATE TABLE ...) trong tệp .sql và thực thi nó bằng dòng lệnh sqlite (giả sử câu lệnh CREATE TABLE của bạn nằm trong tệp có tên tabledef.sql):

    cat tabledef.sql | sqlite3 yourdbname.db
    
  2. Sử dụng PHP để thực thi các câu lệnh DDL trên cơ sở dữ liệu được kết nối (xem "Thực thi câu lệnh").

Kết nối với Cơ sở dữ liệu sqlite

Bạn chắc chắn nên sử dụng PDO để làm điều đó:

$dbh = new PDO('sqlite:/path/to/your/database.db', '', '', array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
));

Nếu cơ sở dữ liệu không tồn tại, thì nó sẽ được tạo. Nhưng bạn cần quyền ghi vào thư mục chứa cơ sở dữ liệu. Nếu bạn chỉ cho phép quyền ghi vào tệp cơ sở dữ liệu, sqlite sẽ không thành công vì nó cũng cần tạo tệp khóa trong cùng thư mục.

Thực thi các câu lệnh

Bây giờ bạn có kết nối, bạn có thể thực hiện công việc của mình với cơ sở dữ liệu, ví dụ như thực thi một số câu lệnh DDL:

$dbh->exec("CREATE TABLE IF NOT EXISTS mytable (
    mypk INTEGER PRIMARY KEY AUTOINCREMENT,
    myvalue TEXT);");

Hoặc nếu bạn cần tạo động các câu lệnh SQL, hãy sử dụng các câu lệnh đã chuẩn bị:

$statement = $dbh->prepare("INSERT INTO mytable (myvalue) VALUES(?)");

$statement->execute(array("hello"));
$statement->execute(array("world"));

Đây chỉ là một tổng quan nhỏ, để biết thêm thông tin, bạn nên xem hướng dẫn sử dụng PDO và Tài liệu sqlite .

6 hữu ích 1 bình luận chia sẻ

SQLite là một hệ quản trị cơ sở dữ liệu quan hệ, khác với các hệ quản trị CSDL khác nó không cần client–server database engine (một dịch vụ, ứng dụng cài đặt đầy đủ thông qua nó kết nối, tương tác với các CSDL), nó được nhúng vào rất nhiều chương trình khác nhau, từ destop, mobile đến website. Hầu hết ngôn ngữ lập trình có các thư viện hỗ trợ kết nối, truy vấn đến SQLite như: PHP C, Java, C#, JavaScript... Nó được nhúng vào các trình duyệt, vào các hệ thống nhúng, hệ điều hành như Android, IOS ... đều đã nhúng mặc định.

SQLite không cần client–server database engine nên có thể hiểu file CSDL đã tích hợp mọi thứ, sử dụng ngay không cần phải cài đặt thêm thứ gì.

SQLite tương thích với chuẩn SQL

Ở đây có một file CSDL mẫu dạng SQLite, bạn có thể tải về nghiên cứu, thực hành: CSDL SQLite mẫu. Hoặc sử dụng trực tiếp công cụ Online: Chạy SQL

Việc kết nối và thi các lệnh SQL với SQLite thật sự rất đơn giản, ví dụ:

SQLite với PHP

Ví dụ bạn cần thi hành một lệnh SQL trên CSDL SQLite với file có tên db.sqlite. Giả sử câu lệnh đó là:

SELECT * FROM Danhmuc

Chạy thử

Đoạn mã PHP kết nối và thi hành lệnh SQL như sau:

query('SELECT * FROM Danhmuc');

    //Đọc kết quả truy vấn
    while ($row = $results->fetchArray())
    {
        var_dump($row);
    }

    $db->close();
?>

SQLite với Java Android

Đoạn mã sau trong một Activity kết nối, truy vấn đến file CSDL SQLite

//Kết nối
SQLiteDatabase db = this.openOrCreateDatabase("db.sqlite", 0, null);

//Truy vấn
Cursor c = db.rawQuery("SELECT * FROM Danhmuc", null);

//Đọc dữ liệu
if(c.moveToFirst()){
do{
    //assing values
    String column1 = c.getString(0);
    String column2 = c.getString(1);
    //Do something Here with values

}while(c.moveToNext());
}
c.close();
db.close();

SQLite với .NET

Đối với .NET thư viên truy cập SQLite được cung cấp tại http://sqlite.org/download.html, vào đó tìm đúng phiên bản binary cho .NET cần dùng, tải về và cài đặt. Sau đó thêm System.Data.SQLite ở thư mục cài đặt C:\Program Files\SQLite.NET\bin vào dự án của bạn để sử dụng.

Cách thứ 2 cài System.Data.SQLite vào dự án bằng Package Manager Console trong Visual Studio

Mở cửa sổ lệnh Package Manager Console, rồi gõ lệnh sau để cài:

PM> Install-Package System.Data.SQLite

Nếu cài đặt thành công, khai báo sử dụng thư viện trong file code:

using System.Data.SQLite;

Dưới đây là đoạn mã, kết nối và truy vấn đến SQLite bằng C#

//Kết nối
SQLiteConnection m_dbConnection =
    new SQLiteConnection("Data Source=db.sqlite;Version=3;");
m_dbConnection.Open();

//Truy vấn
string sql = "SELECT * FROM Danhmuc";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();

//Đọc dữ liệu
string r = "";
while (reader.Read())
{
    r += String.Format("{0} {1} {2} \n", reader[0], reader[1], reader[2]);

}
MessageBox.Show(r);
m_dbConnection.Close();

SQLite với C++ trong VS

Một cách để sử dụng SQLite với C++ sử dụng Visual Studio là tích hợp mã nguồn SQLite vào dự án của bạn. Để tải mã này hãy vào trang chủ sqlite.org/download.html tìm tới mục Source Code và tải về, hoặc link phiên bản hiện tại sqlite-amalgamation-3210000.zip

Sau khi tải vể giải nén, lấy hai file: sqlite3.hsqlite.c để sử dụng trong dự án

Ví dụ dùng VS tạo ra dự án C++, Win32 Console Application có tên SQLiteConsole

Sau khi tạo dự án, copy file .h và .c ở trên vào thư mục dự án, rồi phải chuột vào tên dự án chọn chọn Add > Existing item để gộp hai file đó vào dự án.

Tiếp theo phải chuột vào sqlite.c chọn Properites, mục C/C++ bấm vào Precomplied Header chọn Not Using Precomplied Header

Như vậy bạn bắt đầu có thể sử dụng được các hàm của thư viện SQLite trong dự án C++/C của mình với Visual Studio. Các hàm thư viên tham khảo ở đây: SQLite C/C++ Interface

Giờ bạn copy thêm file dữ liệu mẫu db.sqlite ở trên để thực hiện thử một truy vấn trong ví dụ SQLiteConsole

// SQLiteConsole.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include 
#include 
#include 

#include 
#include "sqlite3.h"

static int mycallback(void *data, int argc, char **argv, char **azColName) {
	int i;
	std::wcout << (const char*)data << ":\n";

	for (i = 0; i

Giải thích đoạn code với C++ ở trên

Khai báo sử dụng thư viện SQLite

#include "sqlite3.h"

Kết nối đến CSDL dùng hàm sqlite3_open, sau khi thực hiện các thao tác với CSDL đóng lại kết nối với hàm sqlite3_close

Một truy vấn với SQLite thực hiện bằng hàm sqlite3_exec có cú pháp như sau:

int sqlite3_exec(
  sqlite3*,                                  /* Một kết nối đến SQLite */
  const char *sql,                           /* Câu lệnh SQL */
  int (*callback)(void*,int,char**,char**),  /* Hàm callback */
  void *,                                    /* tham số truyền cho callback */
  char **errmsg                              /* Thông báo lỗi */
);

Khi gọi hàm sqlite3_exec với mỗi thao tác trên CSDL nó sẽ gọi hàm callback trong tham số, như vậy phải định nghĩa hàm callback của bạn để nhận dữ liệu ...

Hàm callback định nghĩa theo mẫu

typedef int (*sqlite3_callback)(
    void*,    /* dữ liệu nhận từ tham số thứ 4 của hàm  sqlite3_exec*/
    int,      /* Số dòng của cột */
    char**,   /* Mảng chuỗi mô tả các cột của dòng nhận được*/
    char**    /* Mảng chứa tên cột */
);

Ví dụ trên hàm callback tao ra có tên là: mycallback

SQLiteStudio - Giao diện trực quan làm việc với SQLite

Để thực hành, học về SQL nói chung bạn có thể sử dụng CSDL mẫu bằng SQLite để thực hành, với mục đích tương tác với CSDL mà chưa cần áp dụng cho loại ngôn ngữ lập trình nào. Bạn có thể cài đặt công cụ SQLiteStudio, bạn có thể tải về cho macOS, Windows hay Linux.

Sau đó tải luôn dữ liệu mẫu tôi chuẩn bị sẵn, lưu file dữ liệu mẫu tên db.sqlite CSDL SQLite mẫu vào folder nào bạn thích.

Chạy file: SQLiteStudio, giao diện chương trình có dạng

Giao diện SQLiteStudio

Bạn bắt đầu có thể tạo mới CSDL SQLite, thi hành các lệnh SQL trên giao diện này, ở đây bạn đã có file dữ liệu mẫu db.sqlite nên chỉ việc thêm nó vào và thực hành

  • Nhấn CTRL-0 thêm file db.sqlite mẫu vừa tải về để làm việc
  • Nhấn ALT+E mở cửa sổ soạn thảo lệnh SQL ví dụ nhập lệnh select * from Danhmuc
  • Nhấn F9 để chạy lệnh SQL nhập vào, kết quả trả về được thông báo hiện thị trực quan trong cửa sổ chương trình.

Đây là cách mà các bài hướng dẫn về SQL gợi ý dùng để thực hành trên website này. Ngoài ra bạn có thể dùng thẳng các chương trình khác như: MySQL console

Bạn có thể cài đặt XAMPP hoặc wampserver để có luôn cơ sở dữ liệu MariaDB, MySQL và công cụ PHPAdmin để tương tác trực quan với CSDL