QT连接Mysql数据库步骤相对比较麻烦,因此写了篇文章将详细过程呈现给大家,欢迎大家来评论区指导提问。
方法一、直接通过MySQL的驱动加载数据库
示例代码:
(1)在.pro文件中添加下列代码:
QT +=sql
(2)在mainwindow.h文件中添加下列头文件:
#include<QSqlDatabase>
(3)在main.cpp文件中添加下列代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //连接本地主机
db.setPort(3306);
db.setDatabaseName("数据库名");
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "link success");
}
else {
QMessageBox::information(this, "infor", "link failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
运行代码,如果连接Mysql成功则输出下面结果:
如果连接Mysql失败则输出:
如果连接Mysql失败也不用太灰心,方法一在初次连接时很多情况下都会出错。下面我们来看看第二种成功率更高的连接方法。
方法二、通过ODBC连接MySQL数据库
ODBC下载官网
(1)选择适合自己QT版本的ODBC版本。具体如何查看自己QT是多少位的,可以通过QT软件上方的菜单栏 帮助->About QT Creator 查看位数
(2)点击DownLoad后会进入下面的界面
点击No thanks,just start my download即可下载,不用点击上面的登录按钮,否则会有繁琐的登录步骤。
(3)下载完ODBC后,双击安装,一直点next即可完成安装。
(4)安装之后在电脑左下角的搜索栏中输入ODBC即可查看安装后的ODBC
(5)点击添加按钮添加用户DSN.
(6)点击MYSQL ODBC 8。0 ANSI Driver。
(7)这里的内容按照下面提示对应填好即可。
(8)完成Mysql的添加后,可以点击Test按钮测试一下能否连接。
2.ODBC连接代码
代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("刚刚在ODBC中创建的Data source name"); //不是Database,记得别填错
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "link success");
}
else {
QMessageBox::information(this, "infor", "link failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
恭喜你走到这一步,离成功连接Mysql只差最后一步!运行代码,一般都是可以完成连接的了。
总结
QT连接Mysql数据库的步骤相对繁琐,但是也是一个不错的学习经历。希望可以帮到大家,欢迎大家指导评论。
/*************************************************************
QT连mysql数据库,大家装的数据库普遍都是8.0的版本,64位的,这里直接用QMYSQL连接,发现缺少驱动,而且我们用的Qt creater是32位,所以这里选择另一种方式去链接数据库通过QODBC(开放数据库连接),如果你们用的64的mingw,或者是msvc_2013,64位的,那么就可以不用这个方法,直接连就可以了
首先,在自己的数据库中找到这2个文件
放在目录下
点击控制面板找到这个图标
随后点击ODBC Data Sources (32-bit)
配置
点击Test可以出现下窗口则连接成功
下面进行代码检测
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("test");
if(!db.open()){
qDebug()<<"打开失败";
}else{
qDebug()<<"打开成功";
}
QSqlQuery query(db);
//关联数据库
query.exec("select * from teacher"); //执行语句用的
while(query.next()) {
qDebug()<<query.value(0).toString()<<" "
<<query.value(1).toString()<<" "
<<query.value(2).toString();
}
效果如下
如果是msvc 64位,或者是migw64的
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);//是mysql服务器的端口号
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123456");
if (!db.open()) {
qDebug() << QString::fromLocal8Bit("打开失败");
return 0;
}
else{
qDebug() << QString::fromLocal8Bit("打开成功");
}
QSqlQuery query(db); //关联数据库
query.exec("select * from 。。。。;"); //使用查询语句
while (query.next()) {
/*
对查询结果进行输出
*/
}
小结:
里面的本机信号和之后的127.0.0.1之后会在网络编程篇章继续详解原因,有了数据库的帮助之后可以更好的处理许多问题。
/*****************************************************************
QT连接Mysql数据库步骤相对比较麻烦,因此写了篇文章将详细过程呈现给大家,欢迎大家来评论区指导提问。
方法一、直接通过MySQL的驱动加载数据库
示例代码:
(1)在.pro文件中添加下列代码:
QT +=sql
(2)在mainwindow.h文件中添加下列头文件:
#include<QSqlDatabase>
(3)在main.cpp文件中添加下列代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //连接本地主机
db.setPort(3306);
db.setDatabaseName("数据库名");
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "link success");
}
else {
QMessageBox::information(this, "infor", "link failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
运行代码,如果连接Mysql成功则输出下面结果:
如果连接Mysql失败则输出:
如果连接Mysql失败也不用太灰心,方法一在初次连接时很多情况下都会出错。下面我们来看看第二种成功率更高的连接方法。
方法二、通过ODBC连接MySQL数据库
ODBC下载官网
(1)选择适合自己QT版本的ODBC版本。具体如何查看自己QT是多少位的,可以通过QT软件上方的菜单栏 帮助->About QT Creator 查看位数
(2)点击DownLoad后会进入下面的界面
点击No thanks,just start my download即可下载,不用点击上面的登录按钮,否则会有繁琐的登录步骤。
(3)下载完ODBC后,双击安装,一直点next即可完成安装。
(4)安装之后在电脑左下角的搜索栏中输入ODBC即可查看安装后的ODBC
(5)点击添加按钮添加用户DSN.
(6)点击MYSQL ODBC 8。0 ANSI Driver。
(7)这里的内容按照下面提示对应填好即可。
(8)完成Mysql的添加后,可以点击Test按钮测试一下能否连接。
2.ODBC连接代码
代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("刚刚在ODBC中创建的Data source name"); //不是Database,记得别填错
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "link success");
}
else {
QMessageBox::information(this, "infor", "link failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
恭喜你走到这一步,离成功连接Mysql只差最后一步!运行代码,一般都是可以完成连接的了。
总结
QT连接Mysql数据库的步骤相对繁琐,但是也是一个不错的学习经历。希望可以帮到大家,欢迎大家指导评论。
/************************************************
刚开始一直在通过qt直接连MySQL数据库,谁知从来没有成功,各种装数据库,各种编译驱动,全都无果,就在我将要放弃的时候,看到一个人用ODBC连接数据库成功了,我看到了希望,可是试了好几次都没有成功,我一度怀疑我不适合干这行,就在我安慰自己再尝试一次的时候,我终于成功了,好高兴。
下面讲一下我成功的过程:
1. MySQL安装
MySQL Installer下载: https://dev.mysql.com/downloads/installer/
我下载的是这个:
安装的时候选择自定义安装,安装MySQL Server 和 Connector/ODBC两个模块就可以,注意,Connector/ODBC有64位和32位可选,这里如何选择呢?你应该看你的Qt是32位的还是64位的,如果你用的windows操作系统,那么你大概率用的32位的,所以你应该安装32位的Connector/ODBC,如果你不确定,可以打开你的Qt Creator软件,在最上方选择帮助—>About Qt Creator即可查看
多说一句,我把我的MySQL数据库路径加入了环境变量,我不知道这起没起作用,你们暂且试试。
2. Qt安装
Qt下载:https://www.qt.io/offline-installers
我下载的是:
安装的时候我选择的是全部安装。
3. ODBC连接
安装完ODBC之后,会出现64位和32位两个版本,我选择的是32位的,打开之后,依此设置:
选择 用户DSN, 点击 添加
找到箭头所指的驱动,双击
然后看到如下界面,
下面是我的设置,Data Source Name随便填写一个名字就好了,Description随便添就好了,用户和密码填写你设置的,Database点击下拉箭头,选择一个就好,最后点击Test,不出意外应该显示连接成功,然后点击OK
4. 连接代码
首先在 .pro 文件里面加入QT += sql,然后在头文件中加入 #include <QSqlDatabase> 和 #include <QMessageBox>
代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("root");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "success");
}
else {
QMessageBox::information(this, "infor", "open failed");
}
注意:setDatabaseName种填入的应该是你前面填入的Data Source Name
执行:
/******************************************************
第一步要加入对应的数据库模块(sql)在工程文件(.pro)介绍几个类(也是对应的头文件)
- QSqlError提供SQL数据库错误信息的类
- QSqlQuery提供了执行和操作SQL语句的方法
- QSqlQueryDatabase 处理到数据库的连接
1.数据库的连接
1 2 3 4 5 6 7 8 9 10 11 12 | //添加mysql数据库 QSqlDatabase db=QSqlDatabase::addDatabase( "QMYSQL" ); //连接数据库 db.setHostName( "127.0.0.1" );//数据库服务器IP db.setUserName( "root" ); //数据库用户名 db.setPassword( "root" );//数据库用户名密码 db.setDatabaseName( "sys" ); //数据库名 if(db. open ()== false ) { QMessageBox::information(this, "数据库打开失败" ,db.lastError().text()); return ; } |
如果失败可能是QT连接mysql数据库要一个库(自己下载 libmysql.dll)把库文件放在QT的安装目录D:\Qt\5.9\mingw53_32\bin(根据自己的目录) 我的QT版本是5.9。数据库是否打开用户是否错误是否有这个数据库。
2.创建表
1 2 | QSqlQuery q; q. exec ( "create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;" ); |
3.给表插入数据
方法1(单行插入)
1 | q. exec ( "insert into student(id, name, age,score) values(1, '张三', 24,80);" ); |
方法2 (多行插入)又分为 odbc 风格 与 oracle风格
1. odbc 风格
1 2 3 4 5 6 7 8 9 10 11 12 13 | q. prepare ( "insert into student(name, age,score) values(?, ?, ?)" ); //?是占位符 QVariantList name ; name << "素数" << "等待" << "安安" ; QVariantList age; age<<-2<<12<<14; QVariantList score; score<<0<<89<<90; //给字段绑定相应的值 按顺序绑定 q.addBindValue( name ); q.addBindValue(age); q.addBindValue(score); //执行预处理命令 q.execBatch(); |
要加#include<QVariantList>头文件 字段要按顺序绑定
2.orace风格d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //占位符 :+自定义名字 q. prepare ( "insert into student(name, age,score) values(:n, :a,:s)" ); QVariantList name ; name << "夸克" << "红米" << "鸿蒙" ; QVariantList age; age<<5<<10<<3; QVariantList score; score<<77<<89<<99; //给字段绑定 顺序任意因为根据:+自定义名字 q.bindValue( ":n" , name ); q.bindValue( ":s" ,score); q.bindValue( ":a" ,age); //执行预处理命令 q.execBatch(); |
根据占位符区别所以字段顺序可以任意
3.更新表
1 2 | QSqlQuery q; q. exec ( "update student set score=76 where name='李四'" ); |
4.删除表
1 2 | QSqlQuery q; q. exec ( "delete from student where name='张三'" ); |
5.遍历表
1 2 3 4 5 6 7 8 9 10 11 | QSqlQuery q; q. exec ( "select *from student" ); while(q. next ()) //遍历完为 false { //以下标 //qDebug()<<q.value(0).toInt()<<q.value(1).toString()<<q.value(2).toInt() <<q.value(3).toInt(); //以字段 qDebug()<<q.value( "id" ).toInt()<<q.value( "name" ).toString()<<q.value( "age" ).toInt() <<q.value( "score" ).toInt(); } |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)