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

在C++項(xiàng)目中使用SQLite3數(shù)據(jù)庫(kù)的全過(guò)程

 更新時(shí)間:2025年11月03日 09:35:54   作者:Humbunklung  
本文檔介紹如何在 C++ 項(xiàng)目中使用 SQLite3 數(shù)據(jù)庫(kù),假設(shè)通過(guò) vcpkg 安裝了 SQLite3,因本機(jī)為Windows環(huán)境,為方便,用了本機(jī)的Visual Studio 2022 創(chuàng)建cmake項(xiàng)目,需要的朋友可以參考下

安裝 SQLite3

首先,確保你已經(jīng)通過(guò) vcpkg 安裝了 SQLite3??梢允褂靡韵旅钸M(jìn)行安裝:

vcpkg install sqlite3

配置 CMakes

在 CMakeLists.txt 文件中,添加以下內(nèi)容以找到并鏈接 SQLite3:

find_package(SQLite3 REQUIRED)

target_link_libraries(your_target PRIVATE SQLite::SQLite3)

實(shí)際上,由于我用了Visual Studio 2022,我的cmake項(xiàng)目結(jié)構(gòu)如下:

use-sqlite3目錄下的CMakeLists.txt文件我修改如下:

# CMakeList.txt: use-sqlite3 的 CMake 項(xiàng)目,在此處包括源代碼并定義
# 項(xiàng)目特定的邏輯。
#
SET(CMAKE_TOOLCHAIN_FILE "D:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake")
include("D:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake")
if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)
    set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "" FORCE)
endif()
# 將源代碼添加到此項(xiàng)目的可執(zhí)行文件。
add_executable (use-sqlite3 "use-sqlite3.cpp" "use-sqlite3.h")

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET use-sqlite3 PROPERTY CXX_STANDARD 20)
endif()

# TODO: 如有需要,請(qǐng)?zhí)砑訙y(cè)試并安裝目標(biāo)。

find_package(SQLite3 REQUIRED)

target_link_libraries(use-sqlite3 PRIVATE SQLite::SQLite3)

使用 SQLite3

在你的 C++ 代碼中,可以包含 SQLite3 的頭文件并開(kāi)始使用它:

// 示例代碼

// use-sqlite3.cpp: 定義應(yīng)用程序的入口點(diǎn)。
//

#include "use-sqlite3.h"
#include "sqlite3.h"

using namespace std;

int main()
{
	sqlite3* db;
	char* zErrMsg = 0;
	int rc;

	// 打開(kāi)數(shù)據(jù)庫(kù)
	rc = sqlite3_open("example.db", &db);
	if (rc) {
		std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
		return(0);
	}
	else {
		std::cout << "Opened database successfully" << std::endl;
	}

	// 創(chuàng)建表
	const char* sqlCreateTable = "CREATE TABLE IF NOT EXISTS test( "
		"id INTEGER PRIMARY KEY, "
		"name TEXT NOT NULL);";
	rc = sqlite3_exec(db, sqlCreateTable, 0, 0, &zErrMsg);
	if (rc != SQLITE_OK) {
		std::cerr << "SQL error: " << zErrMsg << std::endl;
		sqlite3_free(zErrMsg);
	}
	else {
		std::cout << "Table created successfully" << std::endl;
	}

	// 插入數(shù)據(jù)
	const char* sqlInsert = "INSERT INTO test(name) VALUES ('Alice');";
	rc = sqlite3_exec(db, sqlInsert, 0, 0, &zErrMsg);
	if (rc != SQLITE_OK) {
		std::cerr << "SQL error: " << zErrMsg << std::endl;
		sqlite3_free(zErrMsg);
	}
	else {
		std::cout << "Records created successfully" << std::endl;
	}

	const char* sqlUpdate = "UPDATE test SET name = 'Bob' WHERE id = 2;";
	rc = sqlite3_exec(db, sqlUpdate, 0, 0, &zErrMsg);
	if (rc != SQLITE_OK) {
		std::cerr << "SQL error: " << zErrMsg << std::endl;
		sqlite3_free(zErrMsg);
	}
	else {
		std::cout << "Record updated successfully" << std::endl;
	}

	// 查詢數(shù)據(jù)
	const char* sqlSelect = "SELECT * FROM test;";
	rc = sqlite3_exec(db, sqlSelect, [](void* NotUsed, int argc, char** argv, char** azColName) {
		for (int i = 0; i < argc; i++) {
			std::cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << std::endl;
		}
		std::cout << std::endl;
		return 0;
		}, 0, &zErrMsg);
	if (rc != SQLITE_OK) {
		std::cerr << "SQL error: " << zErrMsg << std::endl;
		sqlite3_free(zErrMsg);
	}
	else {
		std::cout << "Operation done successfully" << std::endl;
	}

	// 關(guān)閉數(shù)據(jù)庫(kù)
	sqlite3_close(db);
	std::cout << "Database closed successfully" << std::endl;

	return 0;
}

運(yùn)行效果如下:

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

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)冒泡排序算法

    C語(yǔ)言實(shí)現(xiàn)冒泡排序算法

    冒泡排序(Bubble Sort),是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡(jiǎn)單的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。
    2015-03-03
  • OpenCV 圖像金字塔的實(shí)現(xiàn)示例

    OpenCV 圖像金字塔的實(shí)現(xiàn)示例

    本文將結(jié)合實(shí)例代碼,介紹OpenCV 圖像金字塔,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • C/C++中static,const,inline三種關(guān)鍵字詳細(xì)總結(jié)

    C/C++中static,const,inline三種關(guān)鍵字詳細(xì)總結(jié)

    以下是對(duì)C/C++中static,const,inline的三種關(guān)鍵字進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • C++遍歷文件夾目錄的方法

    C++遍歷文件夾目錄的方法

    這篇文章主要介紹了C++遍歷文件夾目錄的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • C++?使用getline()從文件中讀取一行字符串方法示例

    C++?使用getline()從文件中讀取一行字符串方法示例

    這篇文章主要介紹了C++?使用getline()從文件中讀取一行字符串方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C語(yǔ)言內(nèi)存泄漏常見(jiàn)情況及解決方案詳解

    C語(yǔ)言內(nèi)存泄漏常見(jiàn)情況及解決方案詳解

    這篇文章主要為大家介紹了C語(yǔ)言內(nèi)存泄漏常見(jiàn)情況及解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C++實(shí)現(xiàn)編寫(xiě)二維碼的示例代碼

    C++實(shí)現(xiàn)編寫(xiě)二維碼的示例代碼

    這篇文章主要為大家詳細(xì)介紹如何基于C++實(shí)現(xiàn)編寫(xiě)二維碼的功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • C++整數(shù)拼接技巧大揭秘

    C++整數(shù)拼接技巧大揭秘

    C++整數(shù)拼接技巧大揭秘,讓你的代碼更簡(jiǎn)潔高效!你是否還在為如何優(yōu)雅地將整數(shù)拼接成字符串而煩惱?本指南將為你揭示C++中最實(shí)用、最酷炫的整數(shù)拼接技巧,助你提升編程技能,需要的朋友可以參考下
    2024-03-03
  • C++之openFrameworks框架介紹

    C++之openFrameworks框架介紹

    本章我們將介紹一個(gè)非常好用的跨平臺(tái)的 C++開(kāi)源框架 openFrameworks。它是一個(gè)開(kāi)源的跨平臺(tái)的C++工具包,方便開(kāi)發(fā)者創(chuàng)建出一個(gè)更簡(jiǎn)單和直觀的框架,擅長(zhǎng)開(kāi)發(fā)圖像和動(dòng)畫(huà),感興趣的同學(xué)可以參考一下
    2023-05-05
  • C++的智能指針你真的了解嗎

    C++的智能指針你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的智能指針,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

会宁县| 辽宁省| 泉州市| 杭锦后旗| 曲阜市| 河北区| 广西| 古田县| 商丘市| 濮阳县| 隆子县| 临武县| 科技| 龙海市| 兴山县| 子长县| 吴忠市| 寻乌县| 大荔县| 木里| 乐亭县| 虎林市| 祁门县| 双柏县| 邯郸市| 城固县| 汶上县| 阜南县| 石楼县| 遵义县| 萝北县| 孙吴县| 武隆县| 怀仁县| 平和县| 宜宾县| 肇州县| 昭通市| 游戏| 宁都县| 光山县|