QT与数据库的远程连接

20 篇文章 4 订阅
<span style="font-size:18px;">    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "OTHER");  
    db.setHostName("IP");  //远程数据库的主机IP
    db.setDatabaseName("swxc");//连接的数据库
    db.setUserName("root");  //用户名
    db.setPassword("****");  //密码</span>


关于连接格式,这里不再多说,与本地连接没什么两样,只不过是把127.0.0.1(localhost)换成了主机IP而已。

我说一下开发过程中可能会遇到的问题。

1.确定远程的数据库是否允许远程连接,如果没有允许,请先设置,在另外一篇博文中我已经详细介绍了windows/linux下数据库远程的配置(主要针对于mysql)


2.确定远程主机是否关闭了防火墙,如果防火墙为打开状态,那么我们是没有办法连接上去的。(具体关闭防火墙,不再讲述,这是作为一个程序员的基本技能)

好吧,我还是讲一下,我的是华硕笔记本win8的系统,直接win键盘+Q,输入防火墙,点击防火墙设置,关闭专网防火墙,可能回提醒存在威胁,但是我觉得,对于我们普通百姓而言,好像没什么值得别人黑的。(公网这里不用关,如果实在局域网内)

建议大家在cmd里边先验证(mysql -h IP -p -u root -p / mysql -h IP -p 端口 -u root  -p)

连接成功后再去程序里边调吧。


3.如果使用的是公网访问,那么会有点问题,我们需要做nat123端口映射,具体nat123,请输入www.baidu.com微笑

但是如果我们在实际开发中,其实我们使用最多的是使用服务器与客户端配合的方式完成(客户端发送请求由服务器进行相关操作后返回结果集,在后续我会讲到)。


4.端口问题,上面我并没有使用端口,因为我并没有指定,格式为db.setport(3306);

mysql默认的端口号为3306,但是也有3309的情况,win7应该是,具体也没有证实过;我们有可能会因为端口问题而连接不上,这里可能会有三种情况:

(1)端口占用,3306端口被其他应用占用,那么我们解除其占用即可。


(2)域名覆盖,有点时候,端口及bind-address会被域名占用,这样的话,重装mysql喽大笑,如果解除其实也是可以的,但是不想那么麻烦。


(3)在mysql安装目录下,有一个文件叫做my.ini,我们可以进去查看端口,看一下端口是否有绑定地址,一般会绑定127.0.0.1,那么我们将其注释即可,或者改成需要绑定的IP即可(在mysqld那一行)


5.需要注意的是,我们在实际开发当中,我们不可能把IP这些东西写死的,那么我们可以做.ini文件,我的步骤是:输入---存文件(.ini)---读文件---连接成功(在QT读取.ini文件中我讲过的),当然,我们也可以使用全局变量,信号,线程等方式,具体视需求而定吧(全局变量容易出问题,经常弄混,release的时候很麻烦的,信号的话,传值也挺烦,最喜欢的就是.ini,用一定的加密算法,就轻松搞定,别人也看不见,关于加密算法,其实也就是自己弄个函数处理一下存的文件,读取的时候再反向就行了,就像先+1,读的时候再-1,类似吧)。


水平有限,只能说这么多了,还有就是提醒大家,百度有的时候其实并不可信,还是自己动手可能会好很多,虽然浪费时间,但是懂了更多,是吧?不知道我说的对不对,但是搜索问题的时候,发现全都是一样的,都是抄袭。好吧,其实我也有的害羞

如果有补充,或者遇到其他的问题,再详细介绍。


  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值