connection postgresql with pqxx (using c++)
๐ Homepage
๐ค holdyounger
- Github: @holdyounger
ๆฆ่ฟฐ๏ผwindowsไธ็ผ่ฏlibpq
๐ก ๆณจๆ1๏ผPostgreSQL ไป็ๆฌ10ไนๅๅฐฑๅชๆ64ไฝไบใไฝฟ็จpqxxไนไธ็จ่่32ไฝ
ไฝฟ็จ็ๆฌ่ฏดๆ๏ผ
- PostGreSQL: 16.1
- pqxx: 7.7.6
๐ก ๆณจๆ2: pqxx ไฝฟ็จ็ๆฏ C++17
what: The official C++ client API for PostgreSQL.
-
postgresqlไบ่ฟๅถๆไปถไธ่ฝฝ้พๆฅ Community DL Page
-
pqxx jtv/libpqxx at 7.7
ๆบ็ ไปๅบๆไพไบwindowsไธๅฟซ้็ผ่ฏlibpq็ๆนๆณใไฝไธๅฅฝ็จ๏ผๆฌไบบๅฐ่ฏไฝๆช่ฝๆๅใ
็ผ่ฏ pqxx ้่ฆ PostGreSQL ็่ฟ่ก็ฏๅข๏ผๅ ๆญค้่ฆไธ่ฝฝไบ่ฟๅถๅ ๆ่ฝ็ผ่ฏๆๅใๅป PostgreSQL ๅฎ็ฝไธ่ฝฝๅฎ่ฃ ๅ ๆ่ ไบ่ฟๅถๅ ้ฝๅฏไปฅใ
ไธ่ฝฝๅฎๆๅ๏ผๅไธค็งๆ
ๅต๏ผๅฆๆๆฏไธ่ฝฝ็ๅฎ่ฃ
ๅ
๏ผๅฎ่ฃ
postgresql ๅ็ดๆฅ็จ cmake ็ผ่ฏๅฐฑๅฏไปฅไบ๏ผๅฆๆไธ่ฝฝ็ๆฏไบ่ฟๅถๆไปถ๏ผๅ้่ฆ้
็ฝฎcmake็ๅ้ๅฆไธๆ็คบ๏ผ็ดๆฅไฟฎๆนๆ น็ฎๅฝ็ CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
file(READ VERSION VER_FILE_CONTENT)
string(STRIP ${VER_FILE_CONTENT} VER_FILE_CONTENT)
project(
libpqxx
VERSION ${VER_FILE_CONTENT}
LANGUAGES CXX
)
# ๅจ่ฟ้ๅฃฐๆ postgresql ็ไบ่ฟๅถๆ น็ฎๅฝ๏ผๆ นๆฎไธชไบบไธๆ
ๅต้
็ฝฎๅณๅฏ
set(PostgreSQL_ROOT "D:\\Documents\\postgresql\\postgresql-16.1-1-windows-x64-binaries\\pgsql")
if(NOT "${CMAKE_CXX_STANDARD}")
set(CMAKE_CXX_STANDARD 17)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
็ถๅๅฐฑๆฏไฝฟ็จ cmake
็ผ่ฏไบ๏ผ็ฎๅ VSCode ๅ Visual Studio ้ฝๆฏๆ CMake ๆไปถ็็ผ่ฏ๏ผ็ดๆฅ็ผ่ฏๅณๅฏใ
่ฟ้ไฝฟ็จ Visual Studio ็ผ่ฏๅ๏ผไผๅจ out ็ฎๅฝไธ็ๆlibๆไปถ๏ผๅฆไธๆ็คบ๏ผ
D:\Documents\A_Source\OpenSource\libpqxx\out>tree /F
ๅท ๆฌๅฐ็ฃ็ ็ๆไปถๅคน PATH ๅ่กจ
ๅทๅบๅๅทไธบ 724D-690E
D:.
โโbuild
โ โโx64-Debug
โ โ .ninja_deps
โ โ .ninja_log
โ โ build.ninja
โ โ CMakeCache.txt
โ โ cmake_install.cmake
โ โ CPackConfig.cmake
โ โ CPackSourceConfig.cmake
โ โ install_manifest.txt
โ โ libpqxx-config-version.cmake
โ โ libpqxx-config.cmake
โ โ libpqxx-targets.cmake
โ โ libpqxx.pc
โ โ VSInheritEnvironments.txt
โ โ
โ โโ.cmake
โ โ โโapi
โ โ โโv1
โ โ โโquery
โ โ โ โโclient-MicrosoftVS
โ โ โ query.json
โ โ โ
โ โ โโreply
โ โ cache-v2-4c1f3ae5d14ffd09e2dd.json
โ โ cmakeFiles-v1-6f2def4807820d15719b.json
โ โ codemodel-v2-8933aef952d7508a3af3.json
โ โ directory-.-Debug-6b54e12c0d4bd01edfca.json
โ โ directory-include-Debug-ba96d77232f254970ce6.json
โ โ directory-src-Debug-5d1cc30954eb9bce3508.json
โ โ directory-test-Debug-f18be1977b403cfd1a50.json
โ โ index-2023-11-16T09-03-01-0309.json
โ โ target-pqxx-Debug-08c4b9d672ef282e41c8.json
โ โ target-runner-Debug-b625a8b78dd4666c4f11.json
โ โ toolchains-v1-3b995f712f6d6e9a85c1.json
โ โ
โ โโCMakeFiles
โ โ โ cmake.check_cache
โ โ โ CMakeConfigureLog.yaml
โ โ โ rules.ninja
โ โ โ TargetDirectories.txt
โ โ โ
โ โ โโ3.26.4-msvc4
โ โ โ โ CMakeCXXCompiler.cmake
โ โ โ โ CMakeDetermineCompilerABI_CXX.bin
โ โ โ โ CMakeRCCompiler.cmake
โ โ โ โ CMakeSystem.cmake
โ โ โ โ
โ โ โ โโCompilerIdCXX
โ โ โ โ CMakeCXXCompilerId.cpp
โ โ โ โ CMakeCXXCompilerId.exe
โ โ โ โ CMakeCXXCompilerId.obj
โ โ โ โ
โ โ โ โโtmp
โ โ โโCMakeTmp
โ โ โโExport
โ โ โ โโd6b66e93f8212dd1f00debf9f6654819
โ โ โ libpqxx-targets-debug.cmake
โ โ โ libpqxx-targets.cmake
โ โ โ
โ โ โโpkgRedirects
โ โ โโShowIncludes
โ โ foo.h
โ โ main.c
โ โ main.obj
โ โ
โ โโinclude
โ โ โ cmake_install.cmake
โ โ โ
โ โ โโCMakeFiles
โ โ โโpqxx
โ โ config-internal-compiler.h
โ โ config-internal-libpq.h
โ โ config-public-compiler.h
โ โ config_cmake.h.in
โ โ
โ โโsrc
โ โ โ cmake_install.cmake
โ โ โ pqxx.lib
โ โ โ
โ โ โโCMakeFiles
โ โ โโpqxx.dir
โ โ array.cxx.obj
โ โ binarystring.cxx.obj
โ โ blob.cxx.obj
โ โ connection.cxx.obj
โ โ cursor.cxx.obj
โ โ encodings.cxx.obj
โ โ errorhandler.cxx.obj
โ โ except.cxx.obj
โ โ field.cxx.obj
โ โ largeobject.cxx.obj
โ โ notification.cxx.obj
โ โ params.cxx.obj
โ โ pipeline.cxx.obj
โ โ pqxx.pdb
โ โ result.cxx.obj
โ โ robusttransaction.cxx.obj
โ โ row.cxx.obj
โ โ sql_cursor.cxx.obj
โ โ strconv.cxx.obj
โ โ stream_from.cxx.obj
โ โ stream_to.cxx.obj
โ โ subtransaction.cxx.obj
โ โ time.cxx.obj
โ โ transaction.cxx.obj
โ โ transaction_base.cxx.obj
โ โ util.cxx.obj
โ โ version.cxx.obj
โ โ wait.cxx.obj
โ โ
โ โโtest
โ โ โ cmake_install.cmake
โ โ โ CTestTestfile.cmake
โ โ โ runner.exe
โ โ โ runner.ilk
โ โ โ runner.pdb
โ โ โ
โ โ โโCMakeFiles
โ โ โโrunner.dir
โ โ โ embed.manifest
โ โ โ intermediate.manifest
โ โ โ manifest.rc
โ โ โ manifest.res
โ โ โ runner.cxx.obj
โ โ โ test00.cxx.obj
โ โ โ test01.cxx.obj
โ โ โ test02.cxx.obj
โ โ โ test04.cxx.obj
โ โ โ test07.cxx.obj
โ โ โ test10.cxx.obj
โ โ โ test11.cxx.obj
โ โ โ test13.cxx.obj
โ โ โ test14.cxx.obj
โ โ โ test16.cxx.obj
โ โ โ test17.cxx.obj
โ โ โ test18.cxx.obj
โ โ โ test20.cxx.obj
โ โ โ test21.cxx.obj
โ โ โ test26.cxx.obj
โ โ โ test29.cxx.obj
โ โ โ test30.cxx.obj
โ โ โ test32.cxx.obj
โ โ โ test37.cxx.obj
โ โ โ test39.cxx.obj
โ โ โ test46.cxx.obj
โ โ โ test56.cxx.obj
โ โ โ test60.cxx.obj
โ โ โ test61.cxx.obj
โ โ โ test62.cxx.obj
โ โ โ test69.cxx.obj
โ โ โ test70.cxx.obj
โ โ โ test71.cxx.obj
โ โ โ test72.cxx.obj
โ โ โ test74.cxx.obj
โ โ โ test75.cxx.obj
โ โ โ test76.cxx.obj
โ โ โ test77.cxx.obj
โ โ โ test78.cxx.obj
โ โ โ test79.cxx.obj
โ โ โ test82.cxx.obj
โ โ โ test84.cxx.obj
โ โ โ test87.cxx.obj
โ โ โ test88.cxx.obj
โ โ โ test89.cxx.obj
โ โ โ test90.cxx.obj
โ โ โ vc140.pdb
โ โ โ
โ โ โโunit
โ โ test_array.cxx.obj
โ โ test_binarystring.cxx.obj
โ โ test_blob.cxx.obj
โ โ test_cancel_query.cxx.obj
โ โ test_column.cxx.obj
โ โ test_composite.cxx.obj
โ โ test_connection.cxx.obj
โ โ test_cursor.cxx.obj
โ โ test_encodings.cxx.obj
โ โ test_errorhandler.cxx.obj
โ โ test_error_verbosity.cxx.obj
โ โ test_escape.cxx.obj
โ โ test_exceptions.cxx.obj
โ โ test_field.cxx.obj
โ โ test_float.cxx.obj
โ โ test_largeobject.cxx.obj
โ โ test_nonblocking_connect.cxx.obj
โ โ test_notification.cxx.obj
โ โ test_pipeline.cxx.obj
โ โ test_prepared_statement.cxx.obj
โ โ test_range.cxx.obj
โ โ test_read_transaction.cxx.obj
โ โ test_result_iteration.cxx.obj
โ โ test_result_slicing.cxx.obj
โ โ test_row.cxx.obj
โ โ test_separated_list.cxx.obj
โ โ test_simultaneous_transactions.cxx.obj
โ โ test_sql_cursor.cxx.obj
โ โ test_stateless_cursor.cxx.obj
โ โ test_strconv.cxx.obj
โ โ test_stream_from.cxx.obj
โ โ test_stream_to.cxx.obj
โ โ test_string_conversion.cxx.obj
โ โ test_subtransaction.cxx.obj
โ โ test_test_helpers.cxx.obj
โ โ test_thread_safety_model.cxx.obj
โ โ test_time.cxx.obj
โ โ test_transaction.cxx.obj
โ โ test_transaction_base.cxx.obj
โ โ test_transaction_focus.cxx.obj
โ โ test_transactor.cxx.obj
โ โ test_type_name.cxx.obj
โ โ test_zview.cxx.obj
โ โ
โ โโTesting
โ โโTemporary
โ LastTest.log
โ
โโinstall
โโx64-Debug
โโinclude
โ โโpqxx
โ โ array
โ โ array.hxx
โ โ binarystring
โ โ binarystring.hxx
โ โ blob
โ โ blob.hxx
โ โ composite
โ โ composite.hxx
โ โ config-public-compiler.h
โ โ connection
โ โ connection.hxx
โ โ cursor
โ โ cursor.hxx
โ โ dbtransaction
โ โ dbtransaction.hxx
โ โ errorhandler
โ โ errorhandler.hxx
โ โ except
โ โ except.hxx
โ โ field
โ โ field.hxx
โ โ isolation
โ โ isolation.hxx
โ โ largeobject
โ โ largeobject.hxx
โ โ nontransaction
โ โ nontransaction.hxx
โ โ notification
โ โ notification.hxx
โ โ params
โ โ params.hxx
โ โ pipeline
โ โ pipeline.hxx
โ โ pqxx
โ โ prepared_statement
โ โ prepared_statement.hxx
โ โ range
โ โ range.hxx
โ โ result
โ โ result.hxx
โ โ robusttransaction
โ โ robusttransaction.hxx
โ โ row
โ โ row.hxx
โ โ separated_list
โ โ separated_list.hxx
โ โ strconv
โ โ strconv.hxx
โ โ stream_from
โ โ stream_from.hxx
โ โ stream_to
โ โ stream_to.hxx
โ โ subtransaction
โ โ subtransaction.hxx
โ โ time
โ โ time.hxx
โ โ transaction
โ โ transaction.hxx
โ โ transaction_base
โ โ transaction_base.hxx
โ โ transaction_focus
โ โ transaction_focus.hxx
โ โ transactor
โ โ transactor.hxx
โ โ types
โ โ types.hxx
โ โ util
โ โ util.hxx
โ โ version
โ โ version.hxx
โ โ zview
โ โ zview.hxx
โ โ
โ โโinternal
โ โ array-composite.hxx
โ โ callgate.hxx
โ โ concat.hxx
โ โ conversions.hxx
โ โ encodings.hxx
โ โ encoding_group.hxx
โ โ header-post.hxx
โ โ header-pre.hxx
โ โ ignore-deprecated-post.hxx
โ โ ignore-deprecated-pre.hxx
โ โ libpq-forward.hxx
โ โ result_iter.hxx
โ โ result_iterator.hxx
โ โ sql_cursor.hxx
โ โ statement_parameters.hxx
โ โ stream_iterator.hxx
โ โ wait.hxx
โ โ
โ โโgates
โ connection-errorhandler.hxx
โ connection-largeobject.hxx
โ connection-notification_receiver.hxx
โ connection-pipeline.hxx
โ connection-sql_cursor.hxx
โ connection-stream_from.hxx
โ connection-stream_to.hxx
โ connection-transaction.hxx
โ errorhandler-connection.hxx
โ icursorstream-icursor_iterator.hxx
โ icursor_iterator-icursorstream.hxx
โ result-connection.hxx
โ result-creation.hxx
โ result-pipeline.hxx
โ result-sql_cursor.hxx
โ transaction-sql_cursor.hxx
โ transaction-transaction_focus.hxx
โ
โโlib
โ โ pqxx.lib
โ โ
โ โโcmake
โ โ โโlibpqxx
โ โ libpqxx-config-version.cmake
โ โ libpqxx-config.cmake
โ โ libpqxx-targets-debug.cmake
โ โ libpqxx-targets.cmake
โ โ
โ โโpkgconfig
โ libpqxx.pc
โ
โโshare
โโdoc
โโlibpqxx
accessing-results.md
binary-data.md
datatypes.md
escaping.md
getting-started.md
mainpage.md
parameters.md
performance.md
prepared-statement.md
streams.md
thread-safety.md
โ ็ถๅๅฐฑๅฏไปฅ็ผไปฃ็ ไฝฟ็จ pqxx.lib ไบใ้คๆญคไนๅค๏ผๅจ็ผ่ฏ้กน็ฎๆถ่ฟ้่ฆๆทปๅ libpq.lib.
้คๆญคไนๅคๅฏไปฅ็ๅฐไปฅไธไธคไธช็ฎๅฝ๏ผ่ฟไธคไธช็ฎๅฝๅพ ไผ่ฆๅผๅ ฅๅฐ VS ๅทฅ็จไธญ๏ผ
-
include๏ผD:\Documents\A_Source\OpenSource\libpqxx\out\install\x64-Debug\include
-
lib: D:\Documents\A_Source\OpenSource\libpqxx\out\install\x64-Debug\lib
-
่ฟ้ๅผๅ ฅ libpq.lib ็็ฎๅฝใ
ไปฅไธไปฃ็ ๅฏ็ดๆฅไฝฟ็จ๏ผ่ชๆตๆฏๆฒก้ฎ้ข็ใ
ๅฆๆๆ็ผ่ฏๆฅ้ C4996: '_Header_ciso646'
๏ผๅ
ณ้ญ ==SDLๆฃๆฅ== ๅ็ผ่ฏ่ฏ่ฏใ
ๅฆๅค่กฅๅ ไธ็น๏ผ็ผ่ฏ็PEๆไปถ่ฟ่กๆถไพ่ตๅพๅคdll๏ผๅ ๆฌไฝไธ้ไบ libpq.dllใlibssl ็ญ๏ผๅฏไปฅ้ๆฉ้จ็ฝฒๅฐๅฆๅคไธๅฐๆบๅจไธ๏ผๅๆถ้จ็ฝฒ C++ ่ฟ่กๆถๆไปถใ
#include <iostream>
#include <windows.h>
#include <pqxx/pqxx>
#include <pqxx/transaction>
int main(int argc, char* argv[])
{
// (Normally you'd check for valid command-line arguments.)
if (argc < 3)
{
printf("Usage:\n %s <username> <password>", argv[0]);
exit(-1);
}
char conn[MAX_PATH];
sprintf(conn, "postgresql://%s:%s@localhost/postgres", argv[1], argv[2]);
try
{
pqxx::connection c{ conn };
pqxx::work txn{ c };
// For querying just one single value, the transaction has a shorthand method
// query_value().
//
// Use txn.quote() to escape and quote a C++ string for use as an SQL string
// in a query's text.
pqxx::result res = txn.exec("SELECT * FROM pg_authid");
for (int i = 0; i < res.size(); i++)
{
for(int j = 0; j < res[i].size(); j++)
std::cout << "" << res[i].at(j) << '\t';
std::cout << '\n';
}
}
catch (std::bad_alloc const&)
{
std::cerr << "Out of memory!" << std::endl;
}
catch (pqxx::sql_error const& e)
{
std::cerr << "SQL error: " << e.what() << std::endl
<< "Query was: " << e.query() << std::endl;
}
catch (std::exception const& e)
{
std::cerr << "Exception: " << e.what() << std::endl;
}
catch (...)
{
std::cerr << "Unknown exception" << std::endl;
}
}
ๅจๅฎ่ฃ postgresql็ๆบๅจไธ่พๅบๅฆไธๆ็คบ๏ผ
Give a โญ๏ธ if this project helped you!
This README was generated with โค๏ธ by readme-md-generator