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. Show 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ị. Đú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. 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 SQLiteHiệ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.
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ậnTrê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 APIsDướ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 DatabaseChươ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 ){ }else{ }
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ảngChươ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 }else{ }
sqlite3_close(db);
return 0;
}Khi chương trình trên được biên dịch và thực thi, nó sẽ tạo bảng COMPANY trong test.db và sau đó liệt kê file như sau: -rwxr-xr-x. 1 root root 9567 May 8 02:31 a.out -rw-r--r--. 1 root root 1207 May 8 02:31 test.c -rw-r--r--. 1 root root 3072 May 8 02:31 test.db Quảng cáo Hoạt động INSERTChương trình C sau minh họa cách chúng ta tạo các bản ghi trong bảng COMPANY đã tạo ở ví dụ trên: include
include
include static int callback(void NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i }else{ }
sqlite3_close(db);
return 0;
}Khi chương trình trên được biên dịch và thực thi, nó sẽ tạo các bản ghi đã cho trong bảng COMPANY và sẽ hiển thị hai dòng sau: Opened database successfully Records created successfully Hoạt động SELECTTrước khi đi vào ví dụ thực sự để lấy các bản ghi, đầu tiên mình sẽ giới thiệu chi tiết cho bạn về hàm callback, sẽ được sử dụng trong các ví dụ. Hàm callback này cung cấp một cách thức để lấy các kết quả từ các lệnh SELECT. Nó có khai báo sau: typedef int (sqlite3_callback)( void, / Data provided in the 4th argument of sqlite3_exec() / int, / The number of columns in row / char*, / An array of strings representing fields in the row / char* / An array of strings representing column names / ); Nếu hàm callback trên được cung cấp trong chương trình con sqlite_exec() như là tham số thứ ba, SQLite sẽ gọi hàm callback này cho mỗi bản ghi được xử lý trong mỗi lệnh SELECT được thực thi bên trong tham số SQL. Chương trình C sau minh họa cách chúng ta lấy và hiển thị các bản ghi từ bảng COMPANY được tạo trong ví dụ trên: include
include
include static int callback(void data, int argc, char **argv, char **azColName){
int i;
fprintf(stderr, "%s: ", (const char)data);
for(i=0; i Khi chương trình trên được biên dịch và thực thi, kết quả là: $gcc test.c -l sqlite3 $./a.out Opened database successfully 0 Hoạt động UPDATEChương trình C sau minh họa cách chúng ta sử dụng các lệnh UPDATE để cập nhật bất kỳ bản ghi nào và sau đó lấy và hiển thị các bản ghi đã được cập nhật từ bảng COMPANY: $gcc test.c -l sqlite3 $./a.out Opened database successfully 1 Khi chương trình trên được biên dịch và thực thi, kết quả là: $gcc test.c -l sqlite3 $./a.out Opened database successfully 2 Quảng cáo Hoạt động DELETEChương trình C sau minh họa cách chúng ta sử dụng các lệnh DELETE để xóa bất kỳ bản ghi nào và sau đó lấy và hiển thị các bản ghi còn lại từ bảng COMPANY: $gcc test.c -l sqlite3 $./a.out Opened database successfully 3 Khi chương trình trên được biên dịch và thực thi, kết quả là: $gcc test.c -l sqlite3 $./a.out Opened database successfully 4 Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS. Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube: Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi. |