2011-07-23 85 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更緊密地集成。 –

相關問題