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

在C++項目中使用SQLite3數(shù)據(jù)庫的全過程

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

安裝 SQLite3

首先,確保你已經(jīng)通過 vcpkg 安裝了 SQLite3。可以使用以下命令進行安裝:

vcpkg install sqlite3

配置 CMakes

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

find_package(SQLite3 REQUIRED)

target_link_libraries(your_target PRIVATE SQLite::SQLite3)

實際上,由于我用了Visual Studio 2022,我的cmake項目結構如下:

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

# CMakeList.txt: use-sqlite3 的 CMake 項目,在此處包括源代碼并定義
# 項目特定的邏輯。
#
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()
# 將源代碼添加到此項目的可執(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: 如有需要,請?zhí)砑訙y試并安裝目標。

find_package(SQLite3 REQUIRED)

target_link_libraries(use-sqlite3 PRIVATE SQLite::SQLite3)

使用 SQLite3

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

// 示例代碼

// use-sqlite3.cpp: 定義應用程序的入口點。
//

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

using namespace std;

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

	// 打開數(shù)據(jù)庫
	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;
	}

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

	return 0;
}

運行效果如下:

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

相關文章

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

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

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

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

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

    C/C++中static,const,inline三種關鍵字詳細總結

    以下是對C/C++中static,const,inline的三種關鍵字進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++遍歷文件夾目錄的方法

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

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

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

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

    C語言內存泄漏常見情況及解決方案詳解

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

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

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

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

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

    C++之openFrameworks框架介紹

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

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

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

最新評論

洛扎县| 平乡县| 海晏县| 新化县| 东光县| 东方市| 邯郸县| 衢州市| 岑溪市| 太白县| 达日县| 涿鹿县| 柳河县| 衢州市| 和田县| 临汾市| 英超| 育儿| 黔江区| 灵山县| 阿鲁科尔沁旗| 沙洋县| 黄平县| 雷山县| 三门县| 赤峰市| 象州县| 石首市| 扎兰屯市| 万荣县| 安龙县| 江陵县| 新源县| 三亚市| 大城县| 元阳县| 东至县| 环江| 雷波县| 乌拉特中旗| 延安市|