在不创建ODBC DSN的情况下读取Pervasive Database 9

时间:2013-01-23 07:37:12

标签: odbc pervasive btrieve

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

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

当我开始时,我对Pervasive或Btrieve一无所知,但经过一些实验,我已经达到了可以使用32位ODBC管理工具创建DSN的程度,我可以从数据中读取数据使用ODBC ADO连接器的文件。到目前为止一切都很好。

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

我不承诺使用ODBC,我很高兴使用OLEDB或任何其他允许我使用.NET从这些文件中可靠读取的技术。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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