通过Qt5连接到VM内部的数据库

时间:2014-11-11 16:08:34

标签: sql database qt

我正在使用 Mac 并行桌面。在我的 Win7 安装中(并行)我有 pgAdmin 和一个简单的测试数据库和表。

我要做的是使用名为 Qt SQL Browser Qt Creator 附带的示例来连接到该数据库。

由于db位于Parallels内部,我不知道  知道怎么连接。我应该在 Qt SQL Browser 的配置屏幕中输入什么内容才能这样做?

1 个答案:

答案 0 :(得分:1)

访问该数据库需要做一些事情。

  1. 数据库需要可以在localhost之外访问。

  2. 您需要为正确的插件文件夹(或者在exe旁边的相对路径中)构建正确的数据库访问插件。

  3. 数据库可访问

    运行数据库的端口(5432是postgres的默认端口),需要允许通过该计算机上的防火墙(Win7安装)。

    http://windows.microsoft.com/en-us/windows/open-port-windows-firewall#1TC=windows-7

    为了让生活更轻松,您还应该通过防火墙对Windows 7计算机进行ping操作。

    http://www.sysprobs.com/enable-ping-reply-windows-7

    你需要获得Parallels看到另一台计算机的IP地址。 (要查找此信息,请在命令提示符下的Windows 7计算机上键入ipconfig并查看网卡的地址。它可能类似192.168.1.X

    如果从Mac上看到计算机,则在键入时应收到回复:

    ping 192.168.1.6
    

    假设6是您的Parallels网络驱动程序选择的数字。

    所以完成上述所有操作后,数据库位置可能会是:

    192.168.1.6
    

    这是您希望放在Hostname:

    下的Qt SQL Browser配置屏幕中的内容

    并确保该端口代表您在设置中使用的端口(修改Port:以反映此设置,例如5432)。

    获取Qt PostGres SQL驱动程序

    包括qt SQL模块。

    QT += sql
    

    获取构建的插件并可用于您的构建。

    https://www.google.com/search?q=qt+build+postgresql+driver

    http://qt-project.org/doc/qt-5/sql-driver.html#qpsql

    基本上,您可以找到用于构建它的示例项目或插件项目,然后将其放在可执行文件期望找到它的文件夹中。如果插件是在普通文件夹中构建的,qtmacdeploy应该有帮助。

    当驱动程序正确就位时,应在代码中运行此命令时列出:

    qDebug() << QSqlDatabase::drivers();
    

    在Qt 5中看起来,默认情况下会构建和包含更多驱动程序。您可以在qsqlconnectiondialog.cpp的顶部看到ui.comboDriver->addItems(drivers);

    http://qt-project.org/doc/qt-5/qsqldatabase.html#drivers

    关于安全性的说明

    通常将数据库暴露给可通过网络直接访问并不是最佳做法。根据数据库的类型,它不会安全发送并且可以接受攻击。

    访问数据库的程序通常使用服务器端服务,例如可以访问数据库的php后端,以及使用一小组命令。数据库只能由服务器上运行的php脚本直接访问,并且php提供数据库的公共接口,具有您需要的安全性。然后,您可以限制登录尝试,只允许特定类型的查询,通常更好的用户管理等。这通常用于MySQL。

    https://www.google.com/search?q=database+security+best+practices+postgres

    希望有所帮助。