QT MySQL数据库连接与测试

其实本文章根本没有给别人看的必要,因为一去二三里的博客里面早已经讲解得非常详细了,但是我在学习的过程中(可能是因为自己的愚笨)还是遇到了一些问题,故而和大家分享我遇到的问题,希望这对后来人有帮助(我的QT版本是5.5 mingw492_32):
1、下载和安装MySQL,这个我就不讲了,我这个毕竟是QT的博客,大家可以到网上找找相关文章;
2、我用的MySQL管理工具是Navicat for MySQL,这个管理工具很好用,具体安装我也不讲了;
3、将MySQL安装目录下的libmysql.dll拷贝到Qt安装目录下的bin目录,如下图:
QT MySQL数据库连接与测试_第1张图片

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

QT MySQL数据库连接与测试_第2张图片

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

#include 
#include 
#include 
#include 
#include 

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

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

    //打开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()<.lastError().text();

    QString select_all_sql = "select * from user";

    //查询所有数据
    QSqlQuery sql_query;
    sql_query.prepare(select_all_sql);
    if(!sql_query.exec())
    {
        qDebug()<.lastError();
    }
    else
    {
        while(sql_query.next())
        {
            int id = sql_query.value(0).toInt();
            QString name = sql_query.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()<"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中的截图和说明:
QT MySQL数据库连接与测试_第3张图片

下图是表user的内容:

QT MySQL数据库连接与测试_第4张图片

6、不出意外的话,会出现这样的结果:
QT MySQL数据库连接与测试_第5张图片

而出现的意外,可能是:
1)is not allowed to connect to this MySQL server
没有开放权限给计算机,需要关闭防火墙或者对3306端口进行相关过滤
2)QSqlDatabase:QMySQL driver not loaded
没有MySQL驱动,按照第3步来做就行了

你可能感兴趣的:(QT,程序设计)