PostgreSQL ODBC 64位驱动程序导致“体系结构不匹配”

时间:2011-07-23 15:03:31

标签: postgresql 64-bit odbc drivers

我正在运行Win 7 64,最新的PostgreSQL 64位,我安装了64位ODBC驱动程序(0310-64)。使用两个ODBC控制面板,我可以创建32位和64位连接。两者都测试好了。

在VS 2010 Express中,我安装了MS的ODBC驱动程序1.0.4030.0。我可以连接到32位DSN,但64位的DSN会出现架构不匹配错误。

这没有意义,因为我在64位ODBC控制面板上设置了64位DSN,在那里我给了64位PG作为选项(与32位CP不同)。我选择了UNICODE版本。

1 个答案:

答案 0 :(得分:1)

使其适用于64位DSN和Visual C#2010 Express Edition编辑项目设置文件.csproj(例如WindowsFormsApplication1.csproj)并将 PlatformTarget 属性设置为 x64

<PlatformTarget>x64</PlatformTarget>

此外,您不需要在外部安装Microsoft ODBC .NET数据提供程序驱动程序,因为它作为System.Data.Odbc命名空间包含在.NET中。

示例:

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。它似乎是非常常见的.NET PostgreSQL接口。