标签:qt
1.开发环境
win7+Qt5.6.1+mysql5.7.14
2.安装mysql
由于本人安装的是win7 32位的Qt5.6.1编译器为mingw 只在Qt官网看到了32位的版本,所以mysql也选择了mysql5.7.14 32位版本。
安装:
(1)下载免安装版本http://dev.mysql.com/downloads/mysql/ 即zip压缩文件
(2)设置环境变量http://jingyan.baidu.com/article/e4d08ffdd5f6670fd2f60d2f.html(参考)
将mysql解压到D盘根目录(目录随意,设置环境变量时输入正确即可)
点我的电脑,右键属性,高级设置,环境变量,新建MYSQL_HOME,输入mysql所在目录,再在path中加入
选中系统变量中的“path”,在path值开头处输入:
;%MYSQL_HOME%\bin确认即可
如下几个图
(3)安装,参考文章:http://jingyan.baidu.com/article/8cdccae946133f315513cd6a.html
在上一步上添加了环境变量,这里要进行配置工作
双击D:\mysql-5.7.14-win32下的my-default文件
修改如下
打开命令行终端cmd(注意需以右键方式,管理身份打开)
分别安顺序执行以下几个命令:
初始化数据库:mysqld --initialize --user=mysql --console得到初始化密码(最下一行)
将MySQL添加到系统服务
mysqld --install MySQL
net start MySQL
启动MySQL并修改密码
在CMD控制台里执行命令 mysql -u root -p
回车执行后,输入刚才记录的随机密码
执行成功后,控制台显示 mysql>,则表示进入mysql
输入命令set password for root@localhost = password(‘123‘); (注意分号)
此时root用户的密码修改为123
3.Qt程序测试
建立Qt例程,测试代码如下(记得在.pro文件中加入QT += sql)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql>
#include <QSqlDatabase>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t "<< driver;
qDebug() << "End";
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setPort(3306);
db.setHostName("localhost");//mysql在本地,赶写这个那可
db.setDatabaseName("mysql");//mysql这个database在数据中自带了一个,之后
db.setUserName("root");//这个user name和password要和上文中设置的一置
db.setPassword("123");
if(!db.open()){
qDebug()<<db.lastError();
}
else{
qDebug() << "\nConnected " << "OK";
}
}
运行程序发现报错
网上查找方法,只需将D:\mysql-5.7.14-win32\lib下的libmysql.dl文件放入C:\Windows下或者放入D:\Qt\Qt5.6.1\5.6\mingw49_32\bin(Qt编译器的bin文件夹)
可入运行。
网上有的说需要重新编译qt的mysql驱动文件(参考:http://blog.csdn.net/m15814478834/article/details/49902077)
4.总结
Qt和mysql的调试花了一天多的时间,问题主要出现在Qt测试程序无正常open一个database,之前用sqlite如果数据库不存在就自己建立了一个,但是在mysql中,似乎不好可以。(数据库基本没怎么用过,所以不太了解)。最后直接按照例程中打开名为"mysql"的数据库才测试成功。用navicat可视化工具建表。
标签:qt
原文地址:http://11496263.blog.51cto.com/11486263/1843537