C++?sqlite3數(shù)據(jù)庫(kù)配置使用教程
??1. 項(xiàng)目介紹
項(xiàng)目Github地址: https://github.com/sqlite/sqlite
SQLite 是一種嵌入式的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是一個(gè)開(kāi)源項(xiàng)目,已經(jīng)被廣泛應(yīng)用于各種應(yīng)用程序和操作系統(tǒng)中。以下是一些 SQLite 的特點(diǎn):
1.輕量級(jí):SQLite 是一個(gè)非常輕量級(jí)的數(shù)據(jù)庫(kù)系統(tǒng),它的設(shè)計(jì)目標(biāo)之一是簡(jiǎn)單、高效、占用資源少。SQLite 的核心庫(kù)非常小巧,以靜態(tài)或動(dòng)態(tài)鏈接方式與應(yīng)用程序集成,使得它適用于嵌入式設(shè)備和資源受限的環(huán)境。
2.無(wú)服務(wù)器架構(gòu):SQLite 是一種無(wú)服務(wù)器架構(gòu)的數(shù)據(jù)庫(kù),意味著它不需要單獨(dú)的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程,數(shù)據(jù)庫(kù)操作直接在應(yīng)用程序內(nèi)部進(jìn)行。這種架構(gòu)使得 SQLite 在本地應(yīng)用和單用戶場(chǎng)景中非常方便和易用。
3.單一文件存儲(chǔ):SQLite 數(shù)據(jù)庫(kù)以單一文件的形式存儲(chǔ)在磁盤(pán)上,這個(gè)文件可以包含整個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)。這種單一文件存儲(chǔ)的特點(diǎn)使得 SQLite 數(shù)據(jù)庫(kù)非常易于備份、傳輸和部署。
4.支持標(biāo)準(zhǔn) SQL:SQLite 支持標(biāo)準(zhǔn)的 SQL 查詢語(yǔ)言,包括常見(jiàn)的增刪改查操作、視圖、觸發(fā)器、索引等功能。它遵循 ANSI-SQL 標(biāo)準(zhǔn),并且提供了豐富的數(shù)據(jù)類型和內(nèi)置函數(shù)支持。
5.ACID 事務(wù)支持:SQLite 支持 ACID(原子性、一致性、隔離性和持久性)事務(wù),可以確保數(shù)據(jù)庫(kù)操作的可靠性和一致性。它使用寫(xiě)-讀鎖定來(lái)實(shí)現(xiàn)并發(fā)控制和多用戶訪問(wèn)。
6.跨平臺(tái):SQLite 是跨平臺(tái)的數(shù)據(jù)庫(kù)系統(tǒng),它可以運(yùn)行在各種操作系統(tǒng)上,包括 Windows、macOS、Linux、Android 等。
7.開(kāi)源和自由:SQLite 是一個(gè)完全開(kāi)源的項(xiàng)目,遵循公共領(lǐng)域(Public Domain)版權(quán)協(xié)議,可以免費(fèi)使用、復(fù)制和分發(fā)。
SQLite 具有的這些特點(diǎn)使得它成為一種非常流行的數(shù)據(jù)庫(kù)選擇,尤其適合于小型和中小型的應(yīng)用程序、移動(dòng)應(yīng)用、嵌入式設(shè)備等場(chǎng)景。無(wú)論是作為獨(dú)立的數(shù)據(jù)庫(kù)引擎還是與其他編程語(yǔ)言和框架集成,SQLite 提供了一種輕便、靈活和可靠的解決方案。
??2. 環(huán)境配置
下面進(jìn)行環(huán)境配置:
ubuntu可直接apt安裝,另外可安裝 sqlitebrowser
可視化工具便于管理。
# 安裝sqlite3 sudo apt install sqlite3 libsqlite3-dev sqlite3 --version sqlite3 test.db # 安裝sqlitebrowser sudo apt-get install sqlitebrowser sqlitebrowser test.db
sqlite常用命令:
.databases:列出當(dāng)前連接的數(shù)據(jù)庫(kù) .tables:列出當(dāng)前數(shù)據(jù)庫(kù)中的表 .schema tablename:顯示指定表的結(jié)構(gòu) CREATE TABLE tablename (column1 datatype, column2 datatype, ...);:創(chuàng)建表 INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);:插入數(shù)據(jù) SELECT * FROM tablename;:查詢表中的數(shù)據(jù) UPDATE tablename SET column1=value1, column2=value2 WHERE condition;:更新表中的數(shù)據(jù) DELETE FROM tablename WHERE condition;:刪除表中的數(shù)據(jù) .exit:退出命令行
??3. 使用說(shuō)明
下面進(jìn)行使用分析:
數(shù)據(jù)庫(kù)創(chuàng)建、插入、查詢、關(guān)閉示例:
#include <iostream> #include <sqlite3.h> int main(int argc, char** argv) { sqlite3* db; char* errorMsg = nullptr; // 打開(kāi)或創(chuàng)建數(shù)據(jù)庫(kù)文件 int rc = sqlite3_open("example.db", &db); if (rc != SQLITE_OK) { std::cout << "無(wú)法打開(kāi)數(shù)據(jù)庫(kù): " << sqlite3_errmsg(db) << std::endl; return rc; } // 創(chuàng)建表 const char* createTableQuery = "CREATE TABLE IF NOT EXISTS employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"; rc = sqlite3_exec(db, createTableQuery, nullptr, nullptr, &errorMsg); if (rc != SQLITE_OK) { std::cout << "無(wú)法創(chuàng)建表: " << errorMsg << std::endl; sqlite3_free(errorMsg); sqlite3_close(db); return rc; } // 插入數(shù)據(jù) const char* insertDataQuery = "INSERT INTO employees (id, name, age) VALUES (1, 'Alice', 25)"; rc = sqlite3_exec(db, insertDataQuery, nullptr, nullptr, &errorMsg); if (rc != SQLITE_OK) { std::cout << "無(wú)法插入數(shù)據(jù): " << errorMsg << std::endl; sqlite3_free(errorMsg); sqlite3_close(db); return rc; } // 查詢數(shù)據(jù) const char* selectDataQuery = "SELECT * FROM employees"; rc = sqlite3_exec( db, selectDataQuery, [](void* data, int argc, char** argv, char** colNames) -> int { for (int i = 0; i < argc; i++) { std::cout << colNames[i] << " = " << argv[i] << std::endl; } return 0; }, nullptr, &errorMsg ); if (rc != SQLITE_OK) { std::cout << "無(wú)法查詢數(shù)據(jù): " << errorMsg << std::endl; sqlite3_free(errorMsg); sqlite3_close(db); return rc; } // 關(guān)閉數(shù)據(jù)庫(kù)連接 sqlite3_close(db); return 0; }
編譯運(yùn)行:
g++ -o main main.cpp -lsqlite3 && ./main
到此這篇關(guān)于C++ sqlite3數(shù)據(jù)庫(kù)配置使用的文章就介紹到這了,更多相關(guān)C++ sqlite3配置使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易的掃雷小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05C++如何實(shí)現(xiàn)簡(jiǎn)易掃雷游戲
這篇文章主要為大家詳細(xì)介紹了C++如何實(shí)現(xiàn)簡(jiǎn)易掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Qt中利用QTextBrowser控件設(shè)計(jì)日志窗口
本文主要介紹了Qt中利用QTextBrowser控件設(shè)計(jì)日志窗口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06C語(yǔ)言實(shí)現(xiàn)3*3數(shù)組對(duì)角線之和示例
今天小編就為大家分享一篇C語(yǔ)言實(shí)現(xiàn)3*3數(shù)組對(duì)角線之和示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果
這篇文章主要介紹的是使用C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果的代碼,非常的簡(jiǎn)單,推薦給大家,有需要的小伙伴可以參考下。2015-03-03