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

QT MySQL数据库连接与测试

2017-03-28 15:13 537 查看
其实本文章根本没有给别人看的必要,因为一去二三里的博客里面早已经讲解得非常详细了,但是我在学习的过程中(可能是因为自己的愚笨)还是遇到了一些问题,故而和大家分享我遇到的问题,希望这对后来人有帮助(我的QT版本是5.5 mingw492_32):

1、下载和安装MySQL,这个我就不讲了,我这个毕竟是QT的博客,大家可以到网上找找相关文章;

2、我用的MySQL管理工具是Navicat for MySQL,这个管理工具很好用,具体安装我也不讲了;

3、将MySQL安装目录下的libmysql.dll拷贝到Qt安装目录下的bin目录,如下图:



将此dll文件拷贝到如下图所示文件夹下:



4、打开QT,并新建工程,首先,加入相关头文件:

#include <qdebug.h>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>


加入相关代码(以下代码都是从一去二三里的博客中直接搬过来的,除了相关配置外,我个人没有经过任何改动,所以希望看到更高水准博客的看官,请移步此博客中:http://blog.sina.com.cn/s/blog_a6fb6cc90101h1gr.html):

void MainWindow::mySqlTest()
{
//输出可用数据库
qDebug()<<"available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug()<<driver;

//打开MySQL
QSqlDatabase data_base = QSqlDatabase::addDatabase("QMYSQL");

data_base.setHostName("192.168.50.28");  //设置主机地址
data_base.setPort(3306);  //设置端口
data_base.setDatabaseName("test");  //设置数据库名称
data_base.setUserName("user");  //设置用户名
data_base.setPassword("123456");  //设置密码
if(!data_base.open())
qDebug()<<"failed to connect to user";
else
qDebug()<<"success";
qDebug()<<data_base.lastError().text();

QString select_all_sql = "select * from user";

//查询所有数据
QSqlQuery sql_query;
sql_query.prepare(select_all_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_que
aa34
ry.value(1).toString();
QString sex = sql_query.value(2).toString();
int Age = sql_query.value(3).toInt();
QString psd = sql_query.value(4).toString();
qDebug()<<QString("Id:%1  Name:%2   Sex:%3    Age:%4    Password:%5").arg(id).arg(name).arg(sex).arg(Age).arg(psd);
}
}
}


我这里访问的不是本机而是另一台电脑的MySQL数据库,可能需要做一些配置(比如关闭防火墙或者让防火墙对3306进行过滤),这里我就不去和大家探讨安全不安全的事情了,如果有这方面经验的看官,可以请教下。

5、说明一下上面的参数:

IP、端口号、用户名、密码就不用多说明了,数据库名称是需要连接到哪一个数据库中(我第一次的时候误把连接名写上去了),下面是Navicat中的截图和说明:



下图是表user的内容:



6、不出意外的话,会出现这样的结果:



而出现的意外,可能是:

1)is not allowed to connect to this MySQL server

没有开放权限给计算机,需要关闭防火墙或者对3306端口进行相关过滤

2)QSqlDatabase:QMySQL driver not loaded

没有MySQL驱动,按照第3步来做就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: