第22篇 Qt5之数据库(二)安装MySQL数据库
版权声明该文章原创于Qt开源社区(www.qter.org),作者yafeilinux,转载请注明出处!
导语
MySQL是一个非常流行的关系型数据库,也是使用标准的SQL语言进行数据库的操作。在Qt 5中已经提供了对MySQL数据库的默认支持,要想使用该数据库,需要先进行数据库的安装,这里我们介绍下在Windows系统中MySQL数据库的安装和简单使用。后面篇章中会使用SQLite作为默认数据库进行讲解,其中的内容对于MySQL数据库也是适用的。
环境:Windows 7 + Qt 5.8.0(包含Qt Creator 4.2.1)
正文
一、安装MySQL
1、从http://www.qter.org/portal.php?mod=view&aid=10下载MySQL安装包,具体文件为mysql-5.6.10-win32,如下图所示。
2、运行下载的安装包,首先出现的是向导欢迎界面。如下图所示。单击“Next”按钮。
3、该界面选择同意条款。如图所示。单击“Next”按钮。
(4)下面选择定制安装“Custom”。
(5)这里需要安装所有的头文件和库,点击Development Components前面的下拉箭头,然后选择第二项。
(6)然后选择下面的“Browse…”按钮来更改安装路径,这里设置为C:\MySQL\。
(7)填写完路径后单击“OK”按钮回到主页面,单击“Next”按钮来到新的页面,这里单击“Install”按钮开始安装。。
(8)等安装完毕后,点击“Finish”按钮完成安装。
2.在MySQL中创建数据库
(1)下面先在安装的MySQL中创建一个数据库,用于后面的测试。首先到MyQSL的安装目录C:\MySQL\bin目录下运行mysqld.exe程序,该程序运行完成后会自动关闭。
(2)同时按下键盘上的Win图标和R键,在弹出的对话框中输入cmd。
(3)进入终端后输入下面的命令:
cd C:\MySQL\bin
跳转到安装目录下。
(4)然后输入下面的命令:
mysql –uroot –p
使用root用户来登陆MySQL,因为默认密码是空的,所以这里不用设置密码。运行这行代码会提示Enter password,这时敲回车即可。
(5)登录MySQL以后,使用下面的命令来查看现有的数据库:
show databases;
注意后面有个分号。
(6)可以看到,这里现在已经有几个数据库了,它们是MySQL需要的。
(7)这里不使用已经有的数据库,而是新建自己的数据库,下面新建名为mydata的数据库:
create database mydata;
(8)再次查看已经存在的数据库,发现显示出了刚才创建的数据库。
(9)完成后,输入exit命令退出MySQL。
二、测试MySQL程序
1、打开Qt Creator,新建项目,模板选择为“Qt Console Application”,项目名称为“mysqltest”。完成后在mysqltest.pro文件中添加如下代码:
QT += sql
然后按下Ctrl+S保存该文件。
2、更改main.cpp文件内容如下。
#include <QCoreApplication>#include <QSqlDatabase>#include <QDebug>#include <QSqlQuery>
int main(int argc, char *argv[]){ QCoreApplication a(argc, argv);
// 打开MySQL QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydata"); db.setUserName("root"); db.setPassword(""); if (!db.open()) qDebug() << "Failed to connect to root mysql admin"; else qDebug() << "open";
QSqlQuery query(db);
//注意这里varchar一定要指定长度,不然会出错 query.exec("create table student(id int primary key,name varchar(20))");
query.exec("insert into student values(1,'xiaogang')"); query.exec("insert into student values(2,'xiaoming')"); query.exec("insert into student values(3,'xiaohong')");
query.exec("select id,name from student where id >= 2");
while(query.next()) { int value0 = query.value(0).toInt(); QString value1 = query.value(1).toString(); qDebug() << value0 << value1 ; }
return a.exec();}
这里注意,创建表时varchar一定要指定长度。
到C:\MySQL\lib中将libmysql.dll文件复制到C:\Qt\Qt5.8.0\5.8\mingw53_32\bin中。运行程序。
结语
这一篇只是介绍了一下MySQL数据库的安装流程和在Qt中的简单使用,只是为了便于需要使用该数据库的读者快速上手。对于不需要使用该数据库的同学,可以跳过本篇,直接学习下面的内容。
源码:
返回主目录
我第一次按照你的步骤走的时候,在输入密码那里直接会车
提示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
我想可能是我MySql服务没有开,结果去服务界面发现没有这个服务
于是我在cmd中bin目录下执行:mysqld.exe -install
提示:Install/Remove of the Service Denied
之后我用管理员身份运行cmd:mysqld.exe -install
提示:Service successfully installed.
这服务中才出现MySQL服务;
开启后,再按照你的步骤执行,结果和你的一致。
但在QT里面执行你给出的代码时结果不一致。
所以前来请教。
PS:上面两张图片是SQL和QT运行截图
蹇治鹏 发表于 2017-6-16 18:38
我第一次按照你的步骤走的时候,在输入密码那里直接会车
提示ERROR 2003 (HY000): Can't connect to MySQL...
到C:\MySQL\lib中将libmysql.dll文件复制到C:\Qt\Qt5.8.0\5.8\mingw53_32\bin中
这个步骤做了没。 请问一下,,,qt 写入MySQL ,英文正常插入,中文却不能(数据库没任何变化),,,
将 insert 语句放到sql控制台却可以执行,想问下是怎么回事 285049001 发表于 2017-6-26 21:01
请问一下,,,qt 写入MySQL ,英文正常插入,中文却不能(数据库没任何变化),,,
将 insert 语句放到sq ...
例如:
// 使数据库支持中文
query.exec("SET NAMES 'Latin1'");
// 创建course表
query.exec("create table course (id int primary key, "
"name varchar(20), teacher varchar(20))");
query.exec("insert into course values(0, '数学', '刘老师')"); yafeilinux 发表于 2017-6-28 16:58
例如:
// 使数据库支持中文
已经解决了,应该是字符串编码的问题,谢谢老师 yafeilinux 发表于 2017-6-19 00:41
到C:\MySQL\lib中将libmysql.dll文件复制到C:\Qt\Qt5.8.0\5.8\mingw53_32\bin中
这个步骤做了没。 ...
老师,您好。
我将libmysql.dll复制到C:\Qt\Qt5.8.0\5.8\msvc2015_64\bin目录中后,运行程序仍是QSqlDatabase: QMYSQL driver not loaded,请问一下是怎么回事 kangyang94 发表于 2017-7-19 14:53
老师,您好。
我将libmysql.dll复制到C:\Qt\Qt5.8.0\5.8\msvc2015_64\bin目录中后,运行程序仍是QSqlData ...
你用的是msvc版本的? yafeilinux 发表于 2017-7-22 11:09
你用的是msvc版本的?
嗯嗯,已经解决,MySQL位数与qt位数不一致的原因,谢谢老师 老师请问msvc版遇到QSqlDatabase: MYSQL driver not loaded该怎么办啊? LBB_CQU 发表于 2017-8-16 17:23
老师请问msvc版遇到QSqlDatabase: MYSQL driver not loaded该怎么办啊?
这个有很多原因啊,看下mysql安装是否可用,自己的dll文件是否进行了复制。 yafeilinux 发表于 2017-8-16 23:42
这个有很多原因啊,看下mysql安装是否可用,自己的dll文件是否进行了复制。 ...
呃老师我网上有的各种方法都已经试了,而且我用python也可以连上,唯独Qt不可以,已经弄了一下午了,查了很多资料,觉得可能是Qt的问题。 LBB_CQU 发表于 2017-8-17 12:20
呃老师我网上有的各种方法都已经试了,而且我用python也可以连上,唯独Qt不可以,已经弄了一下午了,查了 ...
什么系统啊! 285049001 发表于 2017-6-29 08:33
已经解决了,应该是字符串编码的问题,谢谢老师
请问一下是怎么解决的呢?试过很多方法了,输入数据库后,数据库查看还是乱码 yafeilinux 发表于 2017-6-28 16:58
例如:
// 使数据库支持中文
老师,你好,我按照你给方法,输入到数据库后,在数据库查看,中文还是显示乱码?请问下怎么个办呢? 风一样的季节 发表于 2017-9-4 15:51
老师,你好,我按照你给方法,输入到数据库后,在数据库查看,中文还是显示乱码?请问下怎么个办呢? ...
什么数据库,什么系统。 本帖最后由 风一样的季节 于 2017-9-4 23:12 编辑
yafeilinux 发表于 2017-9-4 21:12
什么数据库,什么系统。
MySQL数据库,win10系统,在QT5.8 msvc编译器中,本来是中文数据都输入不了数据库,但是在MySQL控制台中是能够输入的,然后按照老师给出的方案,能输入中文,但是显示乱码。从数据库中读出来的中文数据也是乱码。 风一样的季节 发表于 2017-9-4 23:00
MySQL数据库,win10系统,在QT5.8 msvc编译器中,本来是中文数据都输入不了数据库,但是在MySQL控制台中是 ...
win10系统没有测试过,最好先去网上搜索下相关解决方案。 yafeilinux 发表于 2017-9-6 22:39
win10系统没有测试过,最好先去网上搜索下相关解决方案。
老师,那win7系统怎么解决,我试一下。 风一样的季节 发表于 2017-9-7 08:55
老师,那win7系统怎么解决,我试一下。
可以直接用吧,我这里一直没有出过问题。
页:
[1]
2