Hướng dẫn k sử dụng được sqlite3.h năm 2024

SQLite là một hệ thống quản lý cơ sở dữ liệu quan hệ nhấn mạnh vào tốc độ và cần sự hỗ trợ từ môi trường máy chủ. Nó không phải là cơ sở dữ liệu độc lập mà là cơ sở dữ liệu nhúng – không có máy chủ. SQLite cho phép người dùng có chức năng cơ sở dữ liệu bên trong cơ sở mã của họ mà không cần cài đặt thêm rdbms. Do đó, nó có sự đơn giản và ít cấu hình quản trị hơn so với các loại cơ sở dữ liệu độc lập hoặc máy chủ – máy khách.

SQLite là gì?

Ngoài việc lưu trữ và quản lý dữ liệu, SQLite có thể xử lý các lệnh truy vấn phức tạp kết hợp dữ liệu từ nhiều bảng để tạo báo cáo và tóm tắt dữ liệu.

SQLite mang đến lợi ích gì?

SQLite là một cơ sở dữ liệu nhúng, không yêu cầu giấy phép nào sau khi cài đặt và cho phép các nhà pháp triển lưu trữ dữ liệu mà không cần máy chủ. Nó không cần máy chủ bởi nó không cần một quy trình hoặc hệ thống máy chủ khác để hoạt động.

SQLite có tính linh hoạt cao bởi, bạn có thể dùng nó để làm việc đồng thời trên nhiều cơ sở dữ liệu trong cùng một phiên. Chạy trên đa nền tảng như macOS, Windows mà không yêu cầu bất kỳ cấu hình nào, không cần thiết lập hoặc quản trị.

Lợi ích của SQLite

Đúng với tên gọi của nó, SQLite mang đến cho doanh nghiệp các giải pháp đáng tin cậy để lưu trữ dữ liệu cục bộ trên các ứng dụng, thiết bị. Cung cấp giao diện đơn giản, dễ sử dụng nhưng vẫn đáp ứng đủ các tiện ích cơ bản mà RDBMS có trong các hệ thống cơ sở dữ liệu phức tạp và mở rộng hơn. Ngoài ra, SQLite cũng có bộ tiện ích mở rộng đa dạng với các chứng năng bổ sung hữu ích.

Khi nào nên sử dụng SQLite?

Ngày nay, SQLite vẫn để ứng dụng rộng rãi để phát triển phần mềm nhúng cho các thiết bị tivi, di động, máy ảnh,… dùng để quản lý các yêu cầu http có lưu lượng truy cập thấp đến trung bình.

Khi nào nên sử dụng SQLite

SQLite còn có thể được sử dụng để làm tập dữ liệu tạm thời để xử lý các dữ liệu khác trong ứng dụng. Hoặc có thể sử dụng cho người mới học tập hoặc dùng cho đào tạo bởi nó không yêu cầu cài đặt hay cấu hình.

Các lựa chọn thay thế cho SQLite

Hiện nay, có khá nhiều cơ sở dữ liệu khác cũng cung cấp nhiều tính năng như SQLite. Trong đó, một số cơ sở dữ liệu nhẹ có thể thay thế tốt nhất cho SQLite đó là Couchbase Lite, LevelDB, ObjectBox và LiteDB.

  • Couchbase Lite: là cơ sở dữ liệu NoSQL chuyên cho ứng dụng di động và PC, dùng trong các ứng dụng có tính đồng bộ dữ liệu, offline và mở rộng linh hoạt.
  • LevelDB: là hệ thống cơ sở dữ liệu key-value, tối ưu với dữ liệu nhỏ.
  • ObjectBox: Là cơ sở dữ liệu NoSQL cung cấp hiệu suất cao và tích hợp với ngôn ngữ lập trình như Java và Kotlin.
  • LiteDB: Là một cơ sở dữ liệu NoSQL chuyên dành cho các ứng dụng .NET, ứng dụng desktop và ứng dụng nhỏ gọn, không đòi hỏi cơ sở dữ liệu máy chủ.

Mặc dù vậy nhưng SQLite vẫn có các ưu điểm so với các lựa chọn thay thế của nó đó là tính ổn định và tuổi thọ. Cơ sở dữ liệu này đã được sử dụng những 20 năm và nó cũng không ngừng cải tiến và được ứng dụng rộng rãi.

Chính vì vậy, SQLite vẫn là lựa chọn tốt nhất cho các thiết bị nhúng, các trang web có traffic từ thấp đến trung bình và còn dùng để phân tích dữ liệu hiệu quả. Mặt khác, nó sẽ không phù hợp với các ứng dụng chạy lâu có thể tạo ra nhiều mã soạn sẵn, nó sẽ không hoạt động được tối ưu và không thể quản lý được.

Kết luận

Trên đây là những chia sẻ chi tiết về cơ sở dữ liệu mã nhúng SQLite. Qua đó, bạn có thể thấy, nó vẫn là lựa chọn tối ưu cho các ứng dụng có lưu lượng truy cập nhỏ và vừa và có thể sử dụng để học tập, đào tạo hoặc dùng để phân tích dữ liệu hiệu quả.

Trước khi sử dụng SQLite trong các chương trình C/C++, bạn cần đảm bảo rằng đã có SQLite Library được cài đặt trên máy tính. Bạn có thể kiểm tra chương Cài đặt SQLite để biết tiến trình cài đặt, nếu cần.

C/C++ Interface APIs

Dưới đây là một số chương trình C&C++ / SQLite Interface đủ để đáp ứng yêu cầu của bạn khi làm việc với SQLite Database từ chương trình C/C++ của bạn. Nếu bạn muốn tìm một ứng dụng tinh vi hơn, bạn có thể tìm nó trong SQLite Documentation.

STTAPI & Miêu tả 1sqlite3_open[const char *filename, sqlite3 **ppDb]

Chương trình con này mở một kết nối tới một SQLite database file và trả về một đối tượng database connection để được sử dụng bởi các chương trình con SQLite khác

Nếu tham số filename là NULL hoặc ':memory:', sqlite3_open[] sẽ tạo một in-memory database trong RAM mà chỉ tồn tại trong suốt phiên đó.

Nếu filename không là NULL, sqlite3_open[] cố gắng mở một database file bởi sử dụng giá trị của nó. Nếu không có file nào tồn tại với tên đó, hàm sqlite3_open[] sẽ mở một database file mới bởi tên đó

2sqlite3_exec[sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg]

Chương trình con này cung cấp một cách thức nhanh và dễ dàng để thực thi các lệnh SQL được cung cấp bởi tham số sql mà có thể bao gồm nhiều hơn một lệnh SQL

Ở đây, tham số đầu tiên sqlite3 là đối tượng open database, sqlite_callback là một callback từ đó data là tham số đầu tiên và errmsg sẽ được trả về để bắt bất kỳ lỗi nào được tạo ra bởi chương trình con đó

Chương trình con sqlite3_exec[] phân tích và thực thi mỗi lệnh đã cho trong tham số sql tới khi nó tiến tới phần cuối của chuỗi hoặc bắt gặp một lỗi

3sqlite3_close[sqlite3*]

Chương trình con này đóng một database connection đã được mở trước đó bởi lời gọi tới hàm sqlite3_open[]. Tất cả các lệnh đã chuẩn bị mà được gắn kết với connection nên bị kết thúc trước khi đóng connection đó.

Nếu còn tồn tại bất kỳ truy vấn nào chưa được kết thúc, sqlite3_close[] sẽ trả về SQLITE_BUSY với một thông báo lỗi là Unable to close due to unfinalized statements

Kết nối tới Database

Chương trình C sau minh họa cách kết nối tới Database đang tồn tại. Nếu Database đó không tồn tại, thì nó sẽ được tạo, và cuối cùng một đối tượng Database sẽ được trả về.

include

include

int main[int argc, char* argv[]] { sqlite3 *db; char *zErrMsg = 0; int rc; rc = sqlite3_open["test.db", &db]; if[ rc ]{

  fprintf[stderr, "Can't open database: %s\n", sqlite3_errmsg[db]];
  exit[0];
}else{
  fprintf[stderr, "Opened database successfully\n"];
} sqlite3_close[db]; }

Bây giờ, biên dịch và chạy chương trình trên để tạo cơ sở dữ liệu test.db trong thư mục hiện tại. Bạn có thể thay đổi Path tùy theo yêu cầu của mình.

$gcc test.c -l sqlite3 $./a.out Opened database successfully

Nếu bạn đang sử dụng C++ source code, thì bạn có thể biên dịch chương trình này như sau:

$g++ test.c -l sqlite3

Ở đây, chúng ra đang liên kết chương trình của chúng ta với SQLite3 Library để cung cấp các hàm cần thiết cho chương trình C. Việc này sẽ tạo một Database file là test.db trong thư mục và bạn sẽ có kết quả sau:

-rwxr-xr-x. 1 root root 7383 May 8 02:06 a.out -rw-r--r--. 1 root root 323 May 8 02:05 test.c -rw-r--r--. 1 root root 0 May 8 02:06 test.db

Tạo một bảng

Chương trình C sau sẽ được sử dụng để tạo một bảng trong Database đã được tạo trước đó.

include

include

include

static int callback[void NotUsed, int argc, char **argv, char **azColName]{ int i; for[i=0; i

Chủ Đề