2010-04-07 41 views
1

我們有用C#編寫的.NET 3.5 SP1應用程序,它將數據存儲在SQL CE 3.5數據庫中。我們還需要訪問(只讀)來自傳統VB6應用程序的這些數據。如何從VB6訪問SQL CE 3.5

我不知道這是否可能。我可以想到有幾種解決這個問題的方法。

1)我看了一下ADOCE連接,但是這似乎是嵌入式Visual Basic中的選項只

2)我似乎無法獲取連接使用ADODB.Connection對象,像這樣

工作
Dim MyConnObj As New ADODB.Connection 
' Microsoft.SQLSERVER.CE.OLEDB.3.5 
' Microsoft.SQLSERVER.MOBILE.OLEDB.3.0 
MyConnObj.ConnectionString = "Provider=SQLOLEDB;Data Source=c:\test.sdf" 
MyConnObj.Open 

也許這只是提供商的不好選擇?我也嘗試了以上評論和不同連接字符串出現的提供者,但無濟於事。這兩個提供程序都不安裝在我的開發機器上,並且不會安裝在我的客戶機器上。

3)也許有辦法使用更通用的方法,如ODBC?但我相信這會導致安裝/部署工作,對吧?

有沒有人有這種情況下的任何經驗?正如你所看到的,我真的在尋找一些好的起點。我也接受的答案,如「這是下降死簡單,你也一樣」,只要他們提出一些指導性的方向;-)

回答

5

Provider = Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source = c:\ test.sdf;

確認您有提供者可用。啓動Regedit.exe,打開HKEY_CLASSES_ROOT節點,向下滾動並驗證您是否看到Microsoft.SQLSERVER.CE.OLEDB.3.5密鑰。如果它不在那裏,你來安裝它。 Download link

+0

聽起來很合理。我在安裝提供程序後纔開始工作,非常感謝。我將不得不看看安裝提供商是否會成爲一件麻煩事。 – Masterfu 2010-04-07 11:23:31

+1

這是一個麻煩,你將不得不處理,不安裝它不是一個選項。 – 2010-04-07 11:57:55

1

據connectionstrings.com,你應該能夠使用

Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=myPath\myData.sdf; 

但是,SQL Server CE的OLEDB提供程序不提供所有功能。

+0

connectionstrings.com是一個好主意。我希望這個提供者的限制不會打擾我,選擇語句應該非常簡單。 – Masterfu 2010-04-07 11:23:02

0

您可以創建一個COM可見的C#組件來提取VB6的數據。這樣可以避免爲SQL Server CE使用潛在的惡意OLEDB提供程序。

它還有另外一個好處,它在VB6和數據庫結構之間增加了一層絕緣層。