首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式发现本地网络上的数据库

如何以编程方式发现本地网络上的数据库
EN

Stack Overflow用户
提问于 2012-04-23 12:35:23
回答 2查看 203关注 0票数 0

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

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

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

我不知道我是否只是使用了错误的搜索词,或是否有很少或根本没有真正的信息,但如果这是可能的,一直是令人沮丧的。

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

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

  • 史蒂夫
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-23 13:28:30

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

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

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

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

不过,我的建议可能是完全避免这种情况,因为它增加了许多复杂性,但却没有多少回报。如果您的应用程序是针对非技术终端用户的,那么最好假设没有任何数据库可供他们使用,只需安装一个新的数据库作为安装程序的一部分。非技术用户只有在向他们提供一个数据库选项列表时才会感到困惑,而这些选项对他们来说并不意味着什么。

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

如果你真的想选择一个现有的数据库,我会把它变成一个单独的可选按钮,把它们带到另一个屏幕上,在那里他们可以选择一个网络主机进行调查--只有更多的技术人员会知道数据库的存在。

票数 2
EN

Stack Overflow用户

发布于 2012-04-23 13:41:18

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10280662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档