64-битный драйвер PostgreSQL ODBC приводит к «несоответствию архитектуры» - PullRequest
1 голос
/ 23 июля 2011

Я использую 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.

1 Ответ

1 голос
/ 24 июля 2011

Для работы с 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();
}

Результат:

enter image description here

Также рассмотрите возможность использования Npgsql . Кажется, это довольно распространенный интерфейс PostgreSQL для .NET.

...