【问题标题】:PostgreSQL ODBC 64 bit driver results in "architecture mismatch"PostgreSQL ODBC 64 位驱动程序导致“架构不匹配”
【发布时间】:2011-07-23 15:03:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: postgresql 64-bit odbc drivers


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

    【讨论】:

    • 成功了,谢谢!但是...既然我运行的是 64 位操作系统,为什么 .Net 不自然地选择 64 位 ODBC?
    • Npgsql 比 ODBC 有什么优势吗?我只是按照 PostgreSQL 网站上的说明(ODBC 路由)。
    • 我考虑了一下,我怀疑程序集与 32 位系统的互操作性(但我不是 .NET 专家)。 Npgsql 100% 用 C# 编写,它支持 Entity Framework,并且通常与 PostgreSQL 有更紧密的集成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多