我已经创建了一个C#应用程序,它使用以下连接字符串连接到数据库:
DbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataBaseFileName + "; Jet OLEDB:Engine Type=5";
我认为自从Windows 2000以来Jet 4.0引擎附带了Windows。我的应用程序有一个错误报告功能,让用户向我发送一个错误报告,其中包含程序崩溃时有关错误的一些信息。我的所有数据库查询都有try / catches应该阻止应用程序崩溃,除非它连接到数据库。这是错误报告:
<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& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& 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版本是&gt; = 2000?
,假设安装Jet 4.0是错误的请提供任何建议。我有点绝望。
答案 0 :(得分:0)
您运行的是64位操作系统吗?
如果是这样,您应该将.NET应用程序的“平台目标”更改为“x86”而不是“任何CPU”。 (在项目属性中;标签页'构建')。