最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?sqlite3數(shù)據(jù)庫配置使用教程

 更新時(shí)間:2023年08月09日 08:37:48   作者:Frank學(xué)習(xí)路上  
SQLite 是一種嵌入式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是一個(gè)開源項(xiàng)目,已經(jīng)被廣泛應(yīng)用于各種應(yīng)用程序和操作系統(tǒng)中,這篇文章主要介紹了C++?sqlite3數(shù)據(jù)庫配置使用,需要的朋友可以參考下

??1. 項(xiàng)目介紹

項(xiàng)目Github地址: https://github.com/sqlite/sqlite

SQLite 是一種嵌入式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是一個(gè)開源項(xiàng)目,已經(jīng)被廣泛應(yīng)用于各種應(yīng)用程序和操作系統(tǒng)中。以下是一些 SQLite 的特點(diǎn):

1.輕量級(jí):SQLite 是一個(gè)非常輕量級(jí)的數(shù)據(jù)庫系統(tǒng),它的設(shè)計(jì)目標(biāo)之一是簡(jiǎn)單、高效、占用資源少。SQLite 的核心庫非常小巧,以靜態(tài)或動(dòng)態(tài)鏈接方式與應(yīng)用程序集成,使得它適用于嵌入式設(shè)備和資源受限的環(huán)境。

2.無服務(wù)器架構(gòu):SQLite 是一種無服務(wù)器架構(gòu)的數(shù)據(jù)庫,意味著它不需要單獨(dú)的數(shù)據(jù)庫服務(wù)器進(jìn)程,數(shù)據(jù)庫操作直接在應(yīng)用程序內(nèi)部進(jìn)行。這種架構(gòu)使得 SQLite 在本地應(yīng)用和單用戶場(chǎng)景中非常方便和易用。

3.單一文件存儲(chǔ):SQLite 數(shù)據(jù)庫以單一文件的形式存儲(chǔ)在磁盤上,這個(gè)文件可以包含整個(gè)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)。這種單一文件存儲(chǔ)的特點(diǎn)使得 SQLite 數(shù)據(jù)庫非常易于備份、傳輸和部署。

4.支持標(biāo)準(zhǔn) SQL:SQLite 支持標(biāo)準(zhǔn)的 SQL 查詢語言,包括常見的增刪改查操作、視圖、觸發(fā)器、索引等功能。它遵循 ANSI-SQL 標(biāo)準(zhǔn),并且提供了豐富的數(shù)據(jù)類型和內(nèi)置函數(shù)支持。

5.ACID 事務(wù)支持:SQLite 支持 ACID(原子性、一致性、隔離性和持久性)事務(wù),可以確保數(shù)據(jù)庫操作的可靠性和一致性。它使用寫-讀鎖定來實(shí)現(xiàn)并發(fā)控制和多用戶訪問。

6.跨平臺(tái):SQLite 是跨平臺(tái)的數(shù)據(jù)庫系統(tǒng),它可以運(yùn)行在各種操作系統(tǒng)上,包括 Windows、macOS、Linux、Android 等。

7.開源和自由:SQLite 是一個(gè)完全開源的項(xiàng)目,遵循公共領(lǐng)域(Public Domain)版權(quán)協(xié)議,可以免費(fèi)使用、復(fù)制和分發(fā)。

SQLite 具有的這些特點(diǎn)使得它成為一種非常流行的數(shù)據(jù)庫選擇,尤其適合于小型和中小型的應(yīng)用程序、移動(dòng)應(yīng)用、嵌入式設(shè)備等場(chǎng)景。無論是作為獨(dú)立的數(shù)據(jù)庫引擎還是與其他編程語言和框架集成,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ù)庫
.tables:列出當(dāng)前數(shù)據(jù)庫中的表
.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. 使用說明

下面進(jìn)行使用分析:

數(shù)據(jù)庫創(chuàng)建、插入、查詢、關(guān)閉示例:

#include <iostream>
#include <sqlite3.h>
int main(int argc, char** argv) {
    sqlite3* db;
    char* errorMsg = nullptr;
    // 打開或創(chuàng)建數(shù)據(jù)庫文件
    int rc = sqlite3_open("example.db", &db);
    if (rc != SQLITE_OK) {
        std::cout << "無法打開數(shù)據(jù)庫: " << 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 << "無法創(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 << "無法插入數(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 << "無法查詢數(shù)據(jù): " << errorMsg << std::endl;
        sqlite3_free(errorMsg);
        sqlite3_close(db);
        return rc;
    }
    // 關(guān)閉數(shù)據(jù)庫連接
    sqlite3_close(db);
    return 0;
}

編譯運(yùn)行:

g++ -o main main.cpp -lsqlite3 && ./main

到此這篇關(guān)于C++ sqlite3數(shù)據(jù)庫配置使用的文章就介紹到這了,更多相關(guān)C++ sqlite3配置使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++語言 STL容器list總結(jié)

    C++語言 STL容器list總結(jié)

    這篇文章主要介紹了C++語言 STL容器list總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • C語言二維數(shù)組指針的概念及使用

    C語言二維數(shù)組指針的概念及使用

    C語言中的二維數(shù)組是按行排列的,也就是先存放a[0]行,再存放a[1]行,最后存放a[2]行;每行中的4個(gè)元素也是依次存放。數(shù)組a為int類型,每個(gè)元素占用4個(gè)字節(jié),整個(gè)數(shù)組共占用48個(gè)字節(jié)
    2023-02-02
  • 簡(jiǎn)要說明C語言中指針函數(shù)與函數(shù)指針的區(qū)別

    簡(jiǎn)要說明C語言中指針函數(shù)與函數(shù)指針的區(qū)別

    這篇文章主要介紹了C語言中指針函數(shù)與函數(shù)指針的區(qū)別,指針函數(shù)和函數(shù)指針是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-04-04
  • 一文帶你學(xué)會(huì)C語言中的qsort函數(shù)

    一文帶你學(xué)會(huì)C語言中的qsort函數(shù)

    qsort函數(shù)是C語言的庫函數(shù),能實(shí)現(xiàn)對(duì)各種元素類型的比較,使用的基本思想是快速排序法,頭文件是<stdlib.h>,本文不講解具體實(shí)現(xiàn)原理,只對(duì)使用方法進(jìn)行說明,希望對(duì)大家有所幫助
    2022-12-12
  • C語言循環(huán)語句之重復(fù)執(zhí)行特定的代碼塊

    C語言循環(huán)語句之重復(fù)執(zhí)行特定的代碼塊

    在C語言中分支和循環(huán)語句是實(shí)現(xiàn)條件執(zhí)行和重復(fù)執(zhí)行的重要工具,下面這篇文章主要給大家介紹了關(guān)于C語言循環(huán)語句之重復(fù)執(zhí)行特定的代碼塊的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • C 語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 web 服務(wù)器的原理解析

    C 語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 web 服務(wù)器的原理解析

    這篇文章主要介紹了C 語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 web 服務(wù)器的原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • C++使用數(shù)組來實(shí)現(xiàn)哈夫曼樹

    C++使用數(shù)組來實(shí)現(xiàn)哈夫曼樹

    給定N個(gè)權(quán)值作為N個(gè)葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹,若該樹的帶權(quán)路徑長(zhǎng)度達(dá)到最小,稱這樣的二叉樹為最優(yōu)二叉樹,也稱為哈夫曼樹(Huffman?Tree)。哈夫曼樹是帶權(quán)路徑長(zhǎng)度最短的樹,權(quán)值較大的結(jié)點(diǎn)離根較近
    2022-05-05
  • C語言的abs()函數(shù)和div()函數(shù)你了解嗎

    C語言的abs()函數(shù)和div()函數(shù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言的abs()函數(shù)和div()函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語言使用函數(shù)實(shí)現(xiàn)字符串部分復(fù)制問題

    C語言使用函數(shù)實(shí)現(xiàn)字符串部分復(fù)制問題

    這篇文章主要介紹了C語言使用函數(shù)實(shí)現(xiàn)字符串部分復(fù)制問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++實(shí)現(xiàn)LeetCode(97.交織相錯(cuò)的字符串)

    C++實(shí)現(xiàn)LeetCode(97.交織相錯(cuò)的字符串)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(97.交織相錯(cuò)的字符串),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

高要市| 武定县| 绥滨县| 南涧| 萝北县| 腾冲县| 乐平市| 新郑市| 浮山县| 泗水县| 鄂托克前旗| 英超| 乃东县| 安化县| 白银市| 通道| 峨山| 城固县| 南充市| 五莲县| 扎赉特旗| 普陀区| 花莲市| 灵川县| 沾化县| 湖北省| 彰化市| 五常市| 辽阳县| 漳平市| 沙坪坝区| 洛川县| 蒙城县| 新建县| 页游| 昂仁县| 泗水县| 庄河市| 砀山县| 蓝山县| 锦州市|