qt连接mysql数据库在哪编辑器_Qt连接MySQL数据库最详细的教程

被Qt连接数据库折磨了三天之后终于连接成功了,记录一下希望对看到的人有所帮助。

1.直接通过MySQL的驱动加载数据库

1)所需代码

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", "success");

}

else {

QMessageBox::information(this, "infor", "open failed");

qDebug()<

}

当然要在.pro文件中添加一行引入

QT += sql

如果显示:

a28ebbd7c210d295ca246a337289c35f.png

那么恭喜你太幸运了,你已经成功连接MySQL数据库了,快去使用吧。

如果显示:

f4e22003381d8d02267c55fce826673d.png

也不要灰心接着往下看我的电脑就一直显示失败

b32d96cbe0368e7c5de7903ba4ca1688.png

没有QMYSQL的驱动,这是怎么回事呢?

2)解决QMYSQL driver not loaded

Qt连接到mysql的过程:app->Qt的数据库插件->mysql动态库->mysql服务。

Qt的数据库插件位于“C:\Qt(安装路径)(Qt版本)\版本号(库)\mingw49_32(编译器)\plugins(插件)\sqldrivers(数据库插件)” 下的qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用).

mysql动态库位于“C:\Qt\MySQLServer5.5(mysql安装路径)\lib”下的“libmysql.dll“

i:将mysql下的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下

ii:查看自己的qt中有没有qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用)

如果都有:

运行一下代码:

//输出可用数据库

qDebug()<

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers)

qDebug()<

如果输出中含有MySQL,那么恭喜你说明你的qt有MySQL驱动了:

ffac99d89d6220dd04a0df4ad28590c5.png

如果没有,不要灰心,因为我的就是一直没有MySQL驱动:

938e5f918166cc521d3608a66cef1686.png

大家可以重新下载一些不同的版本尝试一下,我尝试了无数次后不得不放弃,就选择了另一条路,通过ODBC连接MySQL数据库。

2.通过ODBC连接MySQL数据库

1)官方解释:

ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。

简单的说就是我的qt中含有ODBC的驱动:

c640696b4537d986673f07aa637740a5.png

所以利用ODBC去使用MySQL的数据库.

2)下载ODBC

官网

2f807c80bbdda3e3e637d47901dbadaf.png

选择和qt编译器相同的字节比如我的qt使用的是64字节的

5250e63e9f8842086c0f6dda45785039.png

下载的ODBC选择的也是64字节的,选择MSI类型的直接安装就可以

ccf872b113f7bc77a7e56c17905c39ac.png

下载一直点击next即可:

87f6f2eb8562628fee88c8b86b9dc166.png

查看点击小娜,搜索ODBC,

bf56d3669f2925204af7c7f70c7592cc.png

3)连接MySQL数据库

i添加MySQL的DSN

006da7e4bd33d96d182d86349a58edcc.png

红色的可以随便填,是自己对于ODBC驱动的描述,粉色的是MySQL的用户名和密码,数据库选择你在MySQL中创建的数据库名字即可.

000eb4b0e63e230bc8630038b2b207a9.png

点击test如果出现下图说明连接成功

b39c2c21092a8e2e2374dec172b70f48.png

4)qt通过ODBC连接MySQL

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

db.setHostName("127.0.0.1");

db.setPort(3306);

db.setDatabaseName("是你在ODBC中创建的Data source name");

db.setUserName("用户名");

db.setPassword("密码");

bool ok = db.open();

if (ok){

QMessageBox::information(this, "infor", "success");

}

else {

QMessageBox::information(this, "infor", "open failed");

qDebug()<

}

运行程序:

efa66ca6d563d4726be95dd19bccbad3.png

大功告成

3.qt通过ODBC操作数据库

1)查询数据

代码:

//查询数据库中所有表的名称

QStringList tables = db.tables();

foreach(QString table, tables)

qDebug()<

//ODBC查询数据

QSqlQuery result = db.exec(" select * from users");

while(result.next()){

qDebug()<

qDebug()<

qDebug()<

qDebug()<

}

2)插入数据

//ODBC插入数据

result.clear();

bool result_successed = result.exec("insert into users(name,password,score) values ( 'joe2y','123456',0)");

if(result_successed){

qDebug()<

}else {

qDebug()<

}

3)更新数据

//ODBC更新数据

result.clear();

bool result_successed2 = result.exec("update users set score=10 where user_id=2");

if(result_successed2){

qDebug()<

}else{

qDebug()<

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值