0

我正在开展一个需要自定义“向导”来帮助非技术用户安装自定义数据库驱动应用程序的项目。如果已经有合适的数据库引擎,主要问题是不要为自定义应用程序设置新数据库。那么问题来了:如何以编程方式检测现有数据库引擎的类型和位置?

这里的诀窍是,安装程序的要求是向导帮助非技术用户确定兼容性列表中的本地专用网络上是否存在数据库引擎。如果是这样,请协助非技术用户建立与所选数据库引擎的连接。否则向导将安装数据库等。

不管现有的数据库场景如何,只安装首选的 DBMS 会更好吗?该平台是一个windows盒子,但平台独立性是该项目的目标。

我不知道我是否只是使用了错误的搜索词,或者是否几乎没有关于此效果的真实信息,但找出这是否可能是令人沮丧的。

任何帮助、建议、链接、代码资源等将不胜感激。

编辑检测现有数据库的位置和类型的目标是提供一个简单的列表,用户可以从中选择,例如在专用网络上为当前版本添加应用程序的附加实例或作为升级版本(以实现“干净”安装)。该应用程序有点分散,因为通常会有许多应用程序实例(3 - 10 个)作为终端与数据库交互,以不同方式操纵信息以在不同终端上用于不同用途。我认为首选的 DBMS 已经选择了 PostgreSQL。

  • 史蒂夫
4

2 回答 2

2

如果您知道您尝试连接的数据库类型,您应该能够使用ping该类型数据库的默认端口来查看它是否返回响应。或者,尝试打开与数据库的实际连接并查看是否得到响应。

更复杂的是,如果您可以访问网络上的 PC,请浏览到数据库类型的默认安装目录以查看是否存在任何内容。

到目前为止,这 2 个需要使用默认位置和端口安装数据库。

更复杂的是,如果您可以连接到删除 PC 上的注册表,那么您可能可以在注册表树中找到数据库 - 无论用户将数据库安装在哪里,这都会得到修复


我的建议可能是完全避免这种情况,因为它增加了很多复杂性而没有太多回报。如果您的应用程序是针对非技术最终用户的,最好假设没有任何数据库可供他们使用,然后安装一个新数据库作为安装程序的一部分。非技术用户只会在您向他们提供对他们没有任何意义的完整数据库选项列表时感到困惑。

查询本地网络也可能需要很长时间,具体取决于存在多少网络共享以及它们的响应速度。所有这些都会影响安装程序的响应能力,因此最终用户可能不知道为什么安装程序没有做任何事情。

如果您真的想提供选择现有数据库的选项,我会将其设置为一个单独的可选按钮,该按钮会将他们带到另一个屏幕,在那里他们可以选择要调查的网络主机 - 唯一会进入此屏幕的人会成为更多可能知道数据库存在于何处的技术人员。

于 2012-04-23T13:28:30.243 回答
1

如果已经有合适的数据库引擎,主要问题是不要为自定义应用程序设置新数据库。

我不太明白向导如何确定现有数据库是否合适。假设它在网络上找到 3 个 Oracle 和 4 个 MySQL 实例——它将如何选择?此外,这种方法在用户的应用程序和网络上的另一台机器之间创建了依赖关系,而用户甚至都没有意识到这一点。明天数据库不可用时,用户会怎么做?

在我看来,如果数据需要在多个用户或多个系统之间共享,那么数据库的选择必须是用户明确的、有意识的操作。另一方面,如果数据库只是应用程序存储一些东西的地方,那么它应该安装一个——最好是像HSQLDBSQLite这样的轻量级数据库。

于 2012-04-23T13:41:18.990 回答