mysql数据库之前写web网站时用到过,感觉很好用,之前是phpnow将php+mysql+apache的集成安装包,所以安装配置很方便,但是现在转为桌面应用,要配置mysql和qt,所以这里重新记录一下配置方法。
1、下载mysql数据库,下载地址:https://dev.mysql.com/downloads/installer/5.6.html;我下载的版本是:mysql-installer-community-5.6.35.0.msi,直接安装即可;这里叨叨两句:以前mysql是sun公司的开源项目,也就是大名鼎鼎的开发java公司的那个公司,不过后来经营不善被甲骨文收购了,而甲骨文也是搞数据库发家的,不过甲骨文不是开源的,所以mysql落在甲骨文手里前途不明,所以向谷歌,facebook等都转为社区维护的mysql版本了,不过使用方法基本相同这里不妨碍学习。
2、过程配置的注意要与自己的qt相应的版本,是32位的还是64位的,不然配置不了,比如下红圈部分:
3、然后是设置数据库的名称和密码,一般用户就是root,密码要记住了不然待会qt就没办法访问,截图如下:
4、配置qt与mysql,将\MySQL\MySQL Server 5.6\lib目录下的:libmysql.lib,mysqlclient.lib,libmysql.dll复制到\Qt\Qt5.5.1\5.5\mingw492_32\bin目录下。
5、将libmysql.dll复制到C:\Windows下,不然连接时候会报错:如下图:
6、运行qt代码;新建qt项目,在pro里添加QT+=sql;实验源代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QtSql>
#include <iostream>
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("***");
//这里“***”填写自己相应的密码
if (!db.open())
qDebug() << "Failed to connect to root mysql admin";
else
std::cout<<"succeed!"<<std::endl;
QSqlQuery query;
query.exec("create table hello(id bigint not null auto_increment,name varchar(255),age bigint,primary key (id))");
query.exec("insert into hello(name, age) values('呵呵', 18)");
query.exec("insert into hello(name, age) values('xiaonan', 19)");
query.exec("insert into hello(name, age) values('xiaobei', 20)");
query.exec("insert into hello(name, age) values('xiaodong', 21)");
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("select * from hello");
model->setHeaderData(0, Qt::Horizontal, "id");
model->setHeaderData(1, Qt::Horizontal, "名字");
model->setHeaderData(2, Qt::Horizontal, "年龄");
ui->tableView->setWindowTitle("QSqlQueryModel");
ui->tableView->setModel(model);
db.close();
/*
QSqlDatabase dbSQL=QSqlDatabase::addDatabase("QMYSQL");
dbSQL.setHostName("127.0.0.1");
dbSQL.setPort(3306);
dbSQL.setDatabaseName("test");
dbSQL.setUserName("root");
dbSQL.setPassword("****");
if( !dbSQL.open() )
{
qDebug()<<"this,warning,failure";
}
else
{
qDebug()<<"this,ok,success";
}
*/
}
MainWindow::~MainWindow()
{
delete ui;
}
运行效果如下图: