我的客户是一家牙科诊所,购买了一款诊所管理软件。该软件安装在他们的本地服务器上,包括患者数据库、时间表和各种医疗记录。现在他们希望我为他们编写一些他们的软件包中未提供的实用程序,为此我需要能够查询该数据库。
我尝试致电软件制造商的技术支持(帕特森/EagleSoft http://patterson.eaglesoft.net/),并且很难找到足够了解该技术的人来回答我的问题。据我所知,他们的软件没有 API,并且可以理解的是,他们不愿意告诉我如何以编程方式直接查询数据库。他们确实有一个交互式查询窗口,但显然这对于编写自动查询没有好处。他们所透露的只是某个地方有一个 SQL Server DB,但连接到它的 ODBC 驱动程序是 SQL Anywhere 驱动程序(嗯?)。
于是我在服务器上搜索了一下,没有找到任何数据库文件。然后我发现安装创建了某种专有虚拟机,该虚拟机仅对 EagleSoft 软件可见。但是,虽然他们非常擅长在混淆层中隔离数据库,但他们仍然开放 ODBC 驱动程序,这实际上是 SQL Anywhere 连接。
现在,在引人入胜且冗长的序言之后,我的问题是:我可以通过此 ODBC 连接运行哪些查询来询问数据库的结构?如果它下面是 SQL Server DB,我可以使用 sysobjects 表,但我不完全掌握如何使用 SQL Anywhere ODBC 连接来连接到 MSSQL DB。如果他们误导了我,而它实际上是一个 SQL Anywhere 数据库,那么需要运行哪些查询来获取数据库结构?
如果还有其他人曾经成功地实际查询过 EagleSoft(或任何类似的专有软件包),请告诉我您是如何做到的!
事实证明,最简单的方法是使用编写一个小应用程序OdbcDbConnection
,并使用随软件安装的 DSN 进行连接。经过一番探查'select * from sysobjects'
揭示它确实是一个 MS-SQL 数据库,我很高兴从那里开始!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)