Ошибка при подключении к базе данных Postgres в C — использование libpq-fe.h

Эй, я пытаюсь подключиться к базе данных с помощью postgres.

#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>

int main(int argc, char* argv[])
{
//Start connection
PGconn* connection = PQconnectdb("host=webcourse.cs.nuim.ie dbname=cs621      sslmode=require user=ggales password=1234");

if (PQstatus(connection) ==CONNECTION_BAD)
{
printf("Connection error\n");
PQfinish(connection);
return -1; //Execution of the program will stop here
}
printf("Connection ok\n");
//End connection
PQfinish(connection);
printf("Disconnected\n");


return 0;
}

И я продолжаю получать эту ошибку компиляции:

main.c: In function ‘main’:
main.c:9:35: warning: missing terminating " character [enabled by default]
main.c:9:2: error: missing terminating " character
main.c:10:2: error: ‘dbname’ undeclared (first use in this function)
main.c:10:2: note: each undeclared identifier is reported only once for each function it      appears in
main.c:10:9: error: ‘cs621’ undeclared (first use in this function)
main.c:10:15: error: expected ‘)’ before ‘sslmode’
main.c:10:56: warning: missing terminating " character [enabled by default]
main.c:10:15: error: missing terminating " character
main.c:16:1: error: expected ‘,’ or ‘;’ before ‘}’ token
main.c:16:1: error: expected declaration or statement at end of input

Кто-нибудь может понять, почему это происходит?

Спасибо.


person user1974753    schedule 12.04.2013    source источник
comment
Этот код на 100% идентичен тому, что вы пытаетесь скомпилировать? Потому что, основываясь на этих сообщениях об ошибках, я бы предположил, что по какой-то причине компилятор считает, что dbname=cs621 и все, что следует за ним, находится за пределами строки. Также жалуется на строку 9, в фрагменте кода строка, содержащая PQconnectdb, является строкой 8.   -  person fvu    schedule 12.04.2013


Ответы (2)


Ваш код компилируется просто отлично. Если я вставлю его в x.c, я смогу скомпилировать его без проблем:

gcc -I /usr/pgsql-9.2/include -L /usr/pgsql-9.2/lib x.c -lpq

(в вашей системе пути могут отличаться).

person Craig Ringer    schedule 13.04.2013

вы можете использовать 64-битную libpq.lib в 32-битной программе. вы можете использовать 32-битную libpq.lib или сменить платформу на x64.

32-битный клиент + 64-битный сервер не могут нормально работать.

person exlimit    schedule 05.08.2013