您的位置:首页 > 编程语言 > Qt开发

QT与数据库的远程连接

2016-06-05 01:36 691 查看
<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,类似吧)。

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


如果有补充,或者遇到其他的问题,再详细介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: