0

我正在用 C# (.NET 4.0) 编写一个应用程序,它必须与另一个更旧的应用程序集成。部分要求是我的程序必须从三个 Btrieve 文件中读取数据。我可以假设这些 Btrieve 数据文件已经存在于安装我的程序的计算机上,并且我还可以假设 Pervasive PSQL V9 也将安装并且关系和事务服务程序正在运行。

我有相关的 DDF 文件,我可以将它们安装为我的应用程序的一部分。它们的创建方式我必须将它们放在 Btrieve 数据文件所在的不同目录中。(它们必须是数据文件所在目录的子目录)。

我刚开始时对 Pervasive 或 Btrieve 一无所知,但经过一些实验后,我已经到了可以使用 32 位 ODBC 管理工具创建 DSN 并且可以使用ODBC ADO 连接器。到目前为止一切都很好。

我的问题是,是否可以从我的 .NET 程序中读取这些文件,而无需在机器上创建 ODBC DSN?换句话说,是否可以在 ODBC 连接字符串中指定 *.DAT 文件所在的目录和 *.DDF 文件所在的目录?

我不致力于使用 ODBC,我很乐意使用 OLEDB 或任何其他允许我使用 .NET 从这些文件中可靠读取的技术。

4

2 回答 2

1

虽然无 DSN 连接允许您在没有 DSN 的情况下进行连接,但您仍然需要数据库名称。可以使用DTIDTO 动态创建普遍数据库名称。使用 C#,我建议使用 DTO。
如果无法创建数据库名称,则可以使用 OLEDB。Data Source它支持在连接字符串的参数中使用路径,如 OLEDB 文档的远程连接部分所述。

还有一点需要注意的是,确保将 .NET 程序编译为 x86 而不是 AnyCPU。Pervasive OLEDB 提供程序只有 32 位。如果您在编译为 AnyCPU 的 64 位操作系统上安装您的应用程序,它将寻找 64 位提供程序并失败。

于 2013-01-23T13:41:56.770 回答
0

您应该搜索 DSN-less 连接。不是将 DSN=mydsn 传递给 connect 方法(其中 mydsn 是您设置的 DSN),而是传递 DRIVER=xxx(其中 xxx 是驱动程序的名称)以及它需要将其定向到文件的任何其他属性。有许多站点包含不同 ODBC 驱动程序的连接字符串列表,因此如果您找不到 ODBC 驱动程序的文档,则一定会列出 Pervasive。另一种替代方法是查看注册表中的 DSN,您将在其中找到需要指定的属性的名称。

于 2013-01-23T09:06:45.183 回答