在32位或64位环境中创建Access数据库

时间:2010-05-12 16:41:56

标签: c# ms-access 64-bit

我不相信我的问题有解决办法,但我想我会问,以防万一我错过或误解了它的某些方面:

  1. 我有一个C#程序,可以创建和写入Access数据库。更具体地说,是一个C#库,它将成为一套应用程序的一部分。
  2. 这个库不能专门针对32位或64位,因为这意味着套件中的所有程序都必须专门针对(如果它是为32位构建的话,无法将dll加载到64位操作空间中,反之亦然。我想?)。
  3. 我相信“2010 Office System Driver Connectivity Components”允许我从64位环境连接和写入Access数据库(.mdb)。但是,其他要求之一是不会对各种Microsoft Access可再发行版本具有外部依赖性(过去我们遇到过Access应用程序的问题)。
  4. 因此,我真正需要的是一些独立于操作系统(和32/64位独立)的方式来从C#创建和写入Access数据库。这样的事情是否存在,或者我的选择是否如上所述?

    有一种想法是我们可以从连接组件中取出我们依赖的dll,但我相当确定那些是针对32位或64位环境的,所以当我们尝试在非运行时它会失败 - 目标平台。或者它们会像针对“任何”的C#程序一样运行,只是根据环境进行调整?

2 个答案:

答案 0 :(得分:0)

在我之前使用过的应用程序中,需要将数据导出到Access数据库。但是,如果未安装Access,则无法直接“创建”空数据库。由于无法连接到不存在的数据库,我所做的就是创建一个空数据库,将文件本身作为资源嵌入到应用程序中。然后,当我需要创建一个新的“访问数据库”时,我会流式读取它,并将空的数据库结构写到需要的任何地方,无论它需要什么文件名。由于数据库已经在32位环境中创建,因此后续连接时没有问题......但是在64位计算机变得越来越普遍之前也是如此。

希望这有助于您选择/解决方案。

答案 1 :(得分:0)

实际上,如果你编写了一个应用程序 - 你可以强制将它定位在32位,而不用担心。 在64位环境中启动时 - 它将“刚刚运行”。

如果您正在编写一个dll /程序集,那将由应用程序引用,并且您知道此应用程序将被编译为“任何CPU”或“64位”,那么您运气不好,并且这个答案对你没有帮助,可能是:D

相关问题