我想要的是一个在 Windows 上运行的 Powerbuilder 应用程序,它从 CD(或其他一些外部磁盘)运行,该 CD 可以从文件位于同一磁盘上的 ASA 数据库中读取。但我想这样做而不部署 ODBC 或 OLEDB 驱动程序。也就是说,我不想将驱动程序文件复制到客户端的硬盘或添加任何注册表项。这可能吗?
在 Powerbuilder 和 ASA 文档中,他们提到了一些关于“嵌入式数据库连接”的内容,据说您可以在连接字符串中指定数据库服务器的可执行文件。但这无济于事。
我想要的是一个在 Windows 上运行的 Powerbuilder 应用程序,它从 CD(或其他一些外部磁盘)运行,该 CD 可以从文件位于同一磁盘上的 ASA 数据库中读取。但我想这样做而不部署 ODBC 或 OLEDB 驱动程序。也就是说,我不想将驱动程序文件复制到客户端的硬盘或添加任何注册表项。这可能吗?
在 Powerbuilder 和 ASA 文档中,他们提到了一些关于“嵌入式数据库连接”的内容,据说您可以在连接字符串中指定数据库服务器的可执行文件。但这无济于事。
当您尝试连接到数据库并为事务对象的 DBMS 属性指定“ODBC”时,PowerBuilder 将要开始加载驱动程序并查找 ODBC 数据源以获取驱动程序的信息。
我唯一能想到的尝试是在运行时创建所有注册表项并将它们指向驱动程序文件和 CD 上的 .db 文件。您可能已经可以使用 CD 上基于文件的数据源使事情变得更容易,但您仍然需要创建注册表项来设置驱动程序详细信息。然后,您可以在断开/关闭应用程序时删除所有这些条目。我认为没有注册表项你不能完全做到这一点。
您必须部署 ODBC 驱动程序,这就是 PB 与 SQL Anywhere 对话的方式。不过,您不必创建 DNS 条目,您可以使用无 DNS 连接。
http://www.carlprothman.net/Default.aspx?tabid=90#ODBCDriverForSybaseSQLAnywhere
由于您没有得到太多反馈,我想我会提供这个。我已经使用 MS Access 完成了此操作,但 MS Access 更容易连接,并且大多数 Windows PC 都能够通过基于文件的 DSN 进行连接。
如果可能在 ASA 中查找基于文件的 DSN,您肯定希望避免使用 ODBC,但因为它更像是一个完整的数据库引擎,我怀疑没有 ODBC 是可能的,并且可以通过注册表条目设置 ODBC,但一点也不好玩,尤其是如果您的客户端运行不同版本的 Windows。
这是我用于类似但 MS Access 的连接字符串。我选择 Access 正是出于这个原因,它是为了一个 RPG 程序,我想要一个数据库,但不想弄乱 ODBC。
样本:
"Connectstring='Driver={Microsoft Access Driver (*.mdb)};UID=abc;PWD=123;Dbq=C:\Program Files\Mafia Manager\mm.mdb; Exclusive=1;'"