尝试通过C ++程序连接到PostgreSQL

trying to connect to postgresql via c++ program

本文关键字:程序 连接 PostgreSQL      更新时间:2023-10-16

Background

我正在运行Linux...我正在尝试编写一个连接到postgresql数据库的基本小C ++程序。

我正在尝试遵循这篇文章http://www.tutorialspoint.com/postgresql/postgresql_c_cpp.htm

问题

我已经能够编译库...我现在可以看到我的计算机上有以下文件夹 /usr/local/include/pqxx

但是当我尝试编写一些基本代码并编译它时,我收到以下错误:

devbox2:/var/abus# g++ testdb.cpp -lpqxx -lpq
testdb.cpp:2:22: fatal error: pqxx/pqxx: No such file or directory
 #include <pqxx/pqxx> 
                      ^
compilation terminated.

源代码

代码如下所示:

  1 #include <iostream>
  2 #include <pqxx/pqxx>
  3 
  4 using namespace std;
  5 using namespace pqxx;
  6 
  7 int main(int argc, char* argv[])
  8 {
  9    try{
 10       connection C("dbname=testdestination user=testuser password=testpassword 
 11       hostaddr=127.0.0.1 port=5432");
 12       if (C.is_open()) {
 13          cout << "Opened database successfully: " << C.dbname() << endl;
 14       } else {
 15          cout << "Can't open database" << endl;
 16          return 1;
 17       }
 18       C.disconnect ();
 19    }catch (const std::exception &e){
 20       cerr << e.what() << std::endl;
 21       return 1;
 22    }
 23 }

到目前为止我尝试过:

我一直在/usr/local/include/pqxx 文件夹中闲逛,我可以看到有一个名为 pqxx 的文件......但它没有任何扩展名。

下面是该文件夹的 ls -lah 命令中的一个片段:

-rw-r--r--    1 root     root         637 Dec  8 21:42 pipeline
-rw-r--r--    1 root     root        7.5K Dec  8 21:42 pipeline.hxx
-rw-r--r--    1 root     root        1.1K Dec  8 21:42 pqxx
-rw-r--r--    1 root     root         728 Dec  8 21:42 prepared_statement
-rw-r--r--    1 root     root        8.2K Dec  8 21:42 prepared_statement.hxx

我还确保我的 PATH 包含/usr/local/include/pqxx 文件夹。 这是我的路径的样子:

PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/gcc:/usr/local/include/pqxx:/usr/local/include'

我不确定我还应该检查什么。任何建议将不胜感激。谢谢。

要查找包含文件,您必须添加一个-I选项,例如

g++ -I/usr/local/include testdb.cpp -lpqxx -lpq

将目录添加到PATH在这里没有帮助,PATH用于从 shell 中查找可执行文件。