2011-02-08 69 views
1

我做了使用下面的連接字符串一個C#應用程序連接到數據庫:奇怪的錯誤與Microsoft.Jet.OLEDB.4.0

DbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataBaseFileName + "; Jet OLEDB:Engine Type=5"; 

我承擔了什麼,我讀了自從Windows 2000 Jet 4.0引擎隨Windows提供。我的應用程序有一個錯誤報告功能,可讓用戶向我發送一個錯誤報告,其中包含關於程序崩潰時的錯誤的一些信息。我的所有數據庫查詢都有嘗試/捕獲,應該阻止應用程序崩潰,除非它連接到數據庫。以下是錯誤報告:

<Message>Retrieving the COM class factory for component with CLSID {2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due to the following error: 800700c1 is not a valid Win32 application. (Exception from HRESULT: 0x800700C1).</Message> 
<StackTrace> at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean&amp; canBeCached, RuntimeMethodHandleInternal&amp; ctor, Boolean&amp; bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Data.OleDb.OleDbConnectionInternal.CreateInstanceDataLinks() 
    at System.Data.OleDb.OleDbConnectionInternal.GetObjectPool() 
</StackTrace> 
<TypeName>System.BadImageFormatException</TypeName> 

用戶沒有給出任何有關錯誤發生的描述。 我的程序在安裝或運行時不檢查任何內容,以確保JET引擎已安裝或未損壞。這可能是問題嗎?如果Windows版本> = 2000,那麼假定Jet 4.0將被安裝是否是錯誤的?

請任何意見將有所幫助。我有點絕望。

+0

看來你正在調用一個不是有效的win32可執行文件/程序集的類。什麼是操作系統的版本?你是如何安裝Jet庫的? – Kangkan 2011-02-08 05:06:38

回答

0

您是否正在運行64位操作系統?

如果是這樣,您應該將.NET應用程序的'Platform target'更改爲'x86'而不是'Any CPU'。 (在項目屬性;「頁面」構建)。