c++链接postgresql过程

来源:互联网 发布:golang chan 编辑:程序博客网 时间:2024/04/25 22:24

1.工程目录下需要加入4个dll文件(libeay32.dlllibintl.dlllibpq.dllssleay32.dll),这些文件都能在PostgreSQL安装目录下找到;
2.工程cpp文件中加入头文件#include <libpq-fe.h>libpq-fe.h头文件包含了API接口函数声明及注释,下面介绍的函数在libpq-fe.h中都能找到

3.按照下面的图配置项目属性

4.将libpq.lib附加到链接器中QQ截图20140715172437.jpg

5.按照API函数使用就可以了

char connectpresql[128];
        sprintf_s(connectpresql, "dbname=postgres user=postgres password=123456");
        PGconn *pcon;
        pcon = PQconnectdb(connectpresql);
        PGresult *res;
        if (PQstatus(pcon) != CONNECTION_OK){
         cout << "connect to db fail!" << endl;
        }
        //提取时间 timenow
        SYSTEMTIME time;
        GetLocalTime(&time);
        char timenow[50] = { 0 };
        sprintf_s(timenow, sizeof(timenow), "%d-%d-%d %d:%d:%d", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);

        char tempstrDB[1024] = { 0 };

        PQsetClientEncoding(pcon, "GBK");
        sprintf_s(tempstrDB, sizeof(tempstrDB), "SELECT username,userpassword FROM userinfo where username = '%s'", username.c_str());

        res = PQexec(pcon, tempstrDB);
        char * k = PQcmdTuples(res);
        char * u_name;
        char * u_pass;
        if (PQresultStatus(res) == PGRES_TUPLES_OK&&PQntuples(res) > 0){
        u_name = PQgetvalue(res, 0, 0);
        u_pass = PQgetvalue(res, 0, 1);
        }

6.本人遇到的一个问题

我的系统是64位的所以,PG也是64位的,在VS中编辑的时候按照上面步骤配置好后会报PG API函数的错误,无法引用的外部符号错误。解决办法就是VS默认是编辑32位的,改为64位的即可。

1.右键工程--属性

点击右上角的配置管理器

2.找到对应的项目,在平台一栏当中点击下拉,如果已经有64位平台,那么选择即可;如果没有,点击新建。

3.新建一个64位的平台,选择之,一路确认。然后再编译就不报错了。

留着以后配置看,同时希望对新手有用。我也是新手


0 0