我正在用C# (.NET 4.0)编写一个应用程序,它必须与另一个更老的应用程序集成。部分要求是我的程序必须从三个Btrieve文件中读取数据。我可以假设这些Btrieve数据文件已经存在于安装了我的程序的计算机上,并且我还可以假设还将安装普及的PSQL V9,并且关系和事务服务程序正在运行。
我有相关的DDF文件,可以将它们作为应用程序的一部分进行安装。按照它们的创建方式,我必须将它们放在与Btrieve数据文件所在目录不同的目录中。(它们必须是数据文件所在目录的子目录)。
刚开始时,我对Pervasive或Btrieve一无所知,但经过一些试验,我已经可以使用32位ODBC管理工具创建DSN,并且可以使用ODBC ADO连接器读取数据文件。到目前为止一切都很好。
我的问题是,是否可以从.NET程序中读取这些文件,而不必在计算机上创建ODBC DSN?换句话说,可以在ODBC连接字符串中指定*.DAT文件所在的目录和*.DDF文件所在的目录吗?
我并不致力于使用ODBC,我很乐意使用OLEDB或任何其他允许我使用.NET可靠地读取这些文件的技术。
发布于 2013-01-23 21:41:57
虽然无DSN连接允许您在没有DSN的情况下进行连接,但您仍然需要一个数据库名称。可以使用DTI或DTO动态创建普适数据库名称。使用C#,我建议使用DTO。
如果不能创建数据库名称,可以使用OLEDB。它支持在连接字符串的Data Source参数中使用路径,如OLEDB文档的Remote Connections部分所述。
还有一点需要注意的是,请确保将.NET程序编译为x86而不是AnyCPU。普及的OLEDB提供程序只有32位。如果您的应用程序安装在编译为AnyCPU的64位操作系统上,它将查找64位提供程序并失败。
发布于 2013-01-23 17:06:45
您应该搜索无DSN连接。不是将DSN=mydsn传递给connect方法(其中mydsn是您设置的DSN ),而是传递DRIVER=xxx (其中xxx是驱动程序的名称)和它将其定向到文件所需的任何其他属性。有许多站点都有不同ODBC驱动程序的连接字符串列表,所以如果您找不到ODBC驱动程序的文档,那么一个站点肯定会列出无处不在的连接字符串。另一种方法是在注册表中查看DSN,在注册表中可以找到需要指定的属性的名称。
https://stackoverflow.com/questions/14474589
复制相似问题