2011-07-23 47 views
1

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

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

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

回答

1

,使其与64位DSN和工作的Visual C#2010 Express Edition的编辑项目设置文件的.csproj(如WindowsFormsApplication1.csproj),并设置PlatformTarget属性:

<PlatformTarget>x64</PlatformTarget> 

Futhermore你不需要在外部安装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接口。

+0

工作,谢谢!但是...为什么.Net自然会用于64位ODBC,因为我运行的是64位操作系统? – IamIC

+0

Npgsql比ODBC有什么优势吗?我只是简单地遵循PostgreSQL的网站(ODBC路线)的指示。 – IamIC

+1

我想到了它,我怀疑与32位系统的组装互操作性(但我不是.NET专家)。 Npgsql是用C#编写的,它支持实体框架,并且通常与PostgreSQL更紧密地集成。 –

相关问题