我正在运行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版本。
答案 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();
}
结果:
另请考虑使用Npgsql。它似乎是非常常见的.NET PostgreSQL接口。