是一个非常流行的关系型数据库,也是使用标准的 SQL 语言进行数据库的操作。在 Qt 5 中已经提供了对 MySQL 数据库的默认支持,要想使用该数据库,需要先进行数据库的安装,这里我们介绍下在 Windows 系统中 MySQL 数据库的安装和简单使用。后面篇章中会使用 SQLite 作为默认数据库进行讲解,其中的内容对于 MySQL 数据库也是适用的。
环境:Windows 7 + Qt 5.8.0(包含Qt Creator 4.2.1)
一、安装MySQL
、从 http://www.qter.org/portal.php?mod=view&aid=10 下载MySQL 安装包,具体文件为mysql-5.6.10-win32,如下图所示。
所示。单击“ Next ”按钮。
、 该界面选择同意条款。如图 所示。单击“ Next ”按钮。
4、下面选择定制安装“ Custom ”。
5、这里需要安装所有的头文件和库,点击 Development Components 前面的下拉箭头,然后选择第二项。
6、然后选择下面的“ Browse…”按钮来更改安装路径,这里设置为 C:\MySQL\ 。
7、填写完路径后单击“ OK ”按钮回到主页面,单击“ Next ”按钮来到新的页面,这里单击“ Install ”按钮开始安装。 。
8、等安装完毕后,点击“ Finish ”按钮完成安装。
二、在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 以后,使用下面的命令来查看现有的数据库:
注意后面有个分号。
6、可以看到,这里现在已经有几个数据库了,它们是 MySQL 需要的 。
7、这里不使用已经有的数据库,而是新建自己的数据库,下面新建名为 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 一定要指定长度。
中。运行程序 。