我想要的是在Windows上运行的Powerbuilder应用程序,该应用程序从CD(或其他外部磁盘)运行,该CD可以从其文件位于同一磁盘上的ASA数据库中读取。但是我想在不部署ODBC或OLEDB驱动程序的情况下这样做。也就是说,我不想将驱动程序文件复制到客户端的硬盘或添加任何注册表项。这可能吗?
在Powerbuilder和ASA文档中,他们提到了有关“嵌入式数据库连接”的内容,并且可以说您可以在连接字符串中指定数据库服务器的可执行文件。但这没有任何帮助。
答案 0 :(得分:2)
当您尝试连接到数据库并为事务对象的DBMS属性指定“ODBC”时,PowerBuilder将要开始加载驱动程序并查找ODBC数据源以获取驱动程序的信息。
我唯一能想到的就是在运行时创建所有注册表项并将它们指向驱动程序文件和CD上的.db文件。您可以使用CD上的基于文件的数据源使事情变得更容易,但您仍需要创建注册表项来设置驱动程序详细信息。然后,您可以在断开/关闭应用程序时删除所有这些条目。如果没有注册表项,我认为你不能完全做到这一点。
答案 1 :(得分:1)
您必须部署ODBC驱动程序,这就是PB与SQL Anywhere进行通信的方式。您不必创建DNS条目,但您可以使用无DNS连接。
http://www.carlprothman.net/Default.aspx?tabid=90#ODBCDriverForSybaseSQLAnywhere
答案 2 :(得分:0)
由于你没有收到太多反馈,我以为我会提供这个。我已经使用MS Access完成了这项工作,但MS Access更容易连接,大多数Windows PC都可以通过基于文件的DSN连接。
你肯定想避免使用ODBC,如果可能在ASA中寻找基于文件的DSN,但是因为它更像是一个完整的数据库引擎我怀疑没有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; 独家= 1;'“