64-битовият драйвер на PostgreSQL ODBC води до несъответствие на архитектурата

Работя с Win 7 64, най-новия 64-битов PostgreSQL, и инсталирах 64-битовия ODBC драйвер (0310-64). Използвайки двата ODBC контролни панела, мога да създам както 32, така и 64 битова връзка. И двата теста са ок.

Във VS 2010 Express инсталирах ODBC драйвера на MS 1.0.4030.0. Мога да се свържа с 32-битов DSN, но 64-битовият дава грешка за несъответствие на архитектурата.

Това няма смисъл, защото настроих 64-битовия DSN на 64-битовия ODBC контролен панел, където ми беше даден 64-битов PG като опция (за разлика от 32-битовия CP). Избрах UNICODE версията.


person IamIC    schedule 23.07.2011    source източник


Отговори (1)


За да работи с 64-битов DSN и Visual C# 2010 Express Edition, редактирайте файла с настройки на проекта .csproj (напр. WindowsFormsApplication1.csproj) и задайте свойството PlatformTarget на x64:

<PlatformTarget>x64</PlatformTarget>

Освен това не е необходимо да инсталирате външно драйвера на Microsoft ODBC .NET Data Provider, тъй като той е включен в .NET като System.Data.Odbc пространство от имена.

Пример:

private void button1_Click(object sender, EventArgs e)
{
    OdbcConnection cn = new OdbcConnection("dsn=PostgreSQL35W");
    OdbcCommand cmd = new OdbcCommand("SELECT version()", cn);
    cn.Open();

    richTextBox1.AppendText(cmd.ExecuteScalar().ToString());

    cn.Close();
}

Резултат:

въведете описание на изображението тук

Също така обмислете използването на Npgsql вместо това. Изглежда, че е доста често срещан интерфейс на PostgreSQL за .NET.

person Grzegorz Szpetkowski    schedule 24.07.2011
comment
Това проработи, благодаря! Но... защо .Net естествено да не отиде за 64-битов ODBC, след като използвам 64-битова операционна система? - person IamIC; 25.07.2011
comment
Npgsql има ли някакви предимства пред ODBC? Просто следвах инструкциите на сайта на PostgreSQL (маршрутът на ODBC). - person IamIC; 25.07.2011
comment
Мислех за това и подозирам оперативна съвместимост на асемблирането с 32-битови системи (обаче не съм експерт по .NET). Npgsql е написан 100% на C#, има поддръжка за Entity Framework и като цяло има по-тясна интеграция с PostgreSQL. - person Grzegorz Szpetkowski; 25.07.2011