一、前言
本教程是所有运行环境均在Centos7.2下实现,使用前先确定PostgreSQL数据库安装成功,一定要确保安装路径/usr/pgsql-10下面有bin、include、lib、doc、share文件夹(路径可能不一样,但前三个文件夹一定要有,很关键),如何include没有可以下载源码拷贝过来,但最好是安装好就有。本教程中使用libpqxx库来实现C++和pgsql数据库的连接,libpqxx是postgresql的官方C++客户端API,下载地址:http://pqxx.org/download/software/libpqxx/
二、安装libpqxx
wget http://pqxx.org/download/software/libpqxx/libpqxx-4.0.tar.gz
tar xvfz libpqxx-4.0.tar.gz
cd libpqxx-4.0
./configure
make
make install
如果编译不成功可能原因:
1、需要安装依赖,这个一定得有
yum install postgresql-devel
2、前面安装缺少include文件夹
3、查看错误,根据需要进行安装调试
三、代码测试C++连接pgsql数据库
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char* argv[])
{
try{
connection db("dbname=traindata user=postgres password=123456 hostaddr=127.0.0.1 port=5432");
if (db.is_open()) {
cout << "Opened database successfully: " << db.dbname() << endl;
} else {
cout << "Can't open database" << endl;
return 1;
}
db.disconnect ();
}catch (const std::exception &e){
cerr << e.what() << std::endl;
return 1;
}
}
说明:dbname数据库名称,user用户名,password密码,hostaddr为地址,port为端口号,这些一定要根据自己的数据库进行设置。完成后就可以编译上面代码来连接数据库了,记住保持-lpqxx和-lpq给定的顺序。(这里我的工程名为myapp.cpp)
$g++ myapp.cpp -lpqxx -lpq
$./a.out
Opened database successfully: traindata
现在已经成功通过C++代码连接到postgresql数据库了!
结束语:开始本意是想在QT中连接到pgsql数据库,然后进行访问,但Centos7下QT的pgsql驱动没编译好,就采用此方法通过C++进行连接数据库。用C++连接成功后,如若想在QT中使用,只需在.pro文件中添加下面代码即可:
LIBS+=-lpqxx -lpq