Использование PostgreSQL 9.X с C++

Когда я пытаюсь подключиться к postgresql 9.2 с помощью С++, он не работает в Windows, но я могу сделать это с помощью postgresql 8.4. Я слышал, что я могу подключиться с помощью ODBC с MFC.

Есть ли другой простой способ использовать postgresql с C++?

РЕДАКТИРОВАТЬ:

Одно из сообщений об ошибке: LNK2019: неразрешенный внешний символ _PQclear, указанный в функции «void __cdecl queryExecuterWithGlobalConn (char const *)»

Когда я искал это, я увидел, что это распространенная проблема в PostgreSQL 9.X, но не нашел решения. Кстати, работает с cygwin, но не с MinGW и cl.


person Yavuz    schedule 09.04.2013    source источник
comment
Что-то где-то случилось?   -  person Adri C.S.    schedule 09.04.2013
comment
Вы скомпилировали с -lpq или включили libpq.a?   -  person Adri C.S.    schedule 09.04.2013
comment
К вашему сведению, PostgreSQL 9.x не имеет смысла; 9.0, 9.1 и 9.2 — это разные основные выпуски. Да, это нелогично. Что касается C++: Вы действительно имеете в виду Microsoft Visual C++ 11.0 (2012 г.)? C++ — это язык, а не компилятор, набор инструментов или версия выпуска набора инструментов. Вы имеете в виду как MinGW, так и cl ... который вы используете?   -  person Craig Ringer    schedule 09.04.2013
comment
Да, я добавил необходимые библиотеки.   -  person Yavuz    schedule 09.04.2013
comment
@CraigRinger Я упомянул, что это работает с cygwin, но с mingw и cl.   -  person Yavuz    schedule 09.04.2013
comment
@Yavuz cl часть Microsoft Visual Studio. MinGW является частью цепочки инструментов компилятора Minimal GNU для Windows. Это отдельные вещи. Например, между cl.exe 6.0 и cl.exe 11.0 есть огромная разница. Подробности очень важны. Вы строите с make? с nmake? с msbuild? с файлом проекта? Какая версия MSVC? Какая версия MinGW и для чего вы используете MinGW?   -  person Craig Ringer    schedule 09.04.2013


Ответы (1)


Используйте npgsql. Пример собственной библиотеки (.Net Data Provider for Postgresql):

using System;
using System.Data;
using Npgsql;

public class NpgsqlUserManual
{
    public static void Main(String[] args)
    {
         NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=joe;Password=secret;Database=joedata;");
         conn.Open();
         conn.Close();
    }
}
person Oberdan    schedule 16.04.2013
comment
ОП запрашивает С++, а не .Net. - person ALOToverflow; 26.08.2017