64-битный драйвер PostgreSQL ODBC приводит к несоответствию архитектуры

Я использую Win 7 64, последнюю 64-разрядную версию PostgreSQL, и я установил 64-разрядный драйвер ODBC (0310-64). Используя две панели управления ODBC, я могу создать как 32-битное, так и 64-битное соединение. Оба теста в порядке.

В VS 2010 Express я установил драйвер MS ODBC 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