我发现了有些人喜欢静静看博客不聊天呐,
但是ta会“点赞”。
这样的人呢帅气低调有内涵,
美丽大方很优雅。
说的就是你,
不用再怀疑哦
🚥qt一开始是没有mysql驱动的,需要自己手动安装
应用程序输出打印的qt驱动列表:QList("QSQLITE", "QODBC", "QPSQL") 里面未包含“QMYSQL”
视频链接:【qt怎么连接mysql(qt连接不上mysql)】
博客链接:关于qt 各个版本连接不上数据库mysql的问题_qt连接不上数据库的原因-CSDN博客
一、创建Qt Console Application
为什么不创建widget,因为我们只是对数据库进行增删查改操作,当然你想用之前学过的qt组件显示内容也可以用
而Qt Console Application只是输出方式只有打印,正如它的名字一样,项目栏显示只有两个文件
二、调用a.quit()函数退出程序,否则会一直处于运行状态
关于exec()的说明
三、检查当前kit套件的数据库驱动
3.1 如何添加和更换套件
添加套件,点击左侧项目
这里可以更换套件
// 检查kit套件的数据库驱动:
qDebug() << "数据库驱动:" << QSqlDatabase::drivers();
🍔没有mysql就要安装驱动,或者使用其他数据库(只是sql语句可能会不同,其他都是一样)
四、添加mysql数据库并打开
// 添加数据库 不能小写!
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
//
db.setHostName("127.0.0.1"); // 主机IP
db.setUserName("root"); // 用户名
db.setPassword(""); // 密码
db.setDatabaseName("bankdb"); // 要连接哪个数据库,它的名字
// 打开数据库,如果打不开就弹出报错对话框
if(db.open() == false)
{
qDebug() << "WARNING:" << db.lastError().text() << "\n";
}
// 打开成功
qDebug() << "数据库成功打开" << "\n";
五、增删查改
增
// 插入数据
QSqlQuery insertQuery;
// insertQuery.prepare("INSERT INTO accounts (ID, money) VALUES (:id, :money)");
// insertQuery.bindValue(":id", 3); // 假设要插入的ID为3
// insertQuery.bindValue(":money", 1000); // 假设要插入的money为1000
if(insertQuery.exec("INSERT INTO account(ID, money) VALUES (3, 4000)"))
{
qDebug() << "Insert successful";
}
else
{
qDebug() << "Insert failed:" << insertQuery.lastError().text();
}
运行结果
删
// 删除数据
QSqlQuery deleteQuery;
// deleteQuery.prepare("DELETE FROM accounts WHERE ID = :id");
//deleteQuery.bindValue(":id", 2); // 假设要删除的ID为2
if(deleteQuery.exec("DELETE FROM account WHERE ID = 2"))
{
qDebug() << "Delete successful";
}
else
{
qDebug() << "Delete failed:" << deleteQuery.lastError().text();
}
运行结果
改
// 更新数据
QSqlQuery updateQuery;
// updateQuery.prepare("UPDATE account SET money = :money WHERE ID = :id");
// updateQuery.bindValue(":id", 3); // 假设要更新的ID为2
// updateQuery.bindValue(":money", 6666); // 假设新的money值为2000
if(updateQuery.exec("UPDATE account SET money = 1234 WHERE ID = 3"))
//if(query.exec("UPDATE account SET money = 6 WHERE ID = 3"))
{
qDebug() << "Update successful";
}
else
{
qDebug() << "Update failed:" << query.lastError().text();
}
运行结果
查
// 增删查改都可以用QSqlQuery
QSqlQuery query;
// 执行查询
if(query.exec("select money from account where ID = 2"))
{
if(query.next())
{
int money = query.value(0).toInt();
qDebug() << "Money:" << money;
}
else
{
qDebug() << "No record found with ID 2";
}
}
else
{
qDebug() << "查询失败:" << query.lastError().text();
}
运行结果
完整代码
pro文件需要加:QT = core sql
#include <QCoreApplication>
//#include <QDebug>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// Set up code that uses the Qt event loop here.
// Call a.quit() or a.exit() to quit the application.
// A not very useful example would be including
// #include <QTimer>
// near the top of the file and calling
// QTimer::singleShot(5000, &a, &QCoreApplication::quit);
// which quits the application after 5 seconds.
// If you do not need a running Qt event loop, remove the call
// to a.exec() or use the Non-Qt Plain C++ Application template.
// 检查kit套件的数据库驱动:
qDebug() << "数据库驱动:" << QSqlDatabase::drivers();
// 添加数据库 不能小写!
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
//
db.setHostName("127.0.0.1"); // 主机IP
db.setUserName("root"); // 用户名
db.setPassword(""); // 密码
db.setDatabaseName("bankdb"); // 要连接哪个数据库,它的名字
// 打开数据库,如果打不开就弹出报错对话框
if(db.open() == false)
{
qDebug() << "WARNING:" << db.lastError().text() << "\n";
}
// 打开成功
qDebug() << "数据库成功打开" << "\n";
// 增删查改都可以用QSqlQuery
QSqlQuery query;
/*
// 执行查询
if(query.exec("select money from account where ID = 2"))
{
if(query.next())
{
int money = query.value(0).toInt();
qDebug() << "Money:" << money;
}
else
{
qDebug() << "No record found with ID 2";
}
}
else
{
qDebug() << "查询失败:" << query.lastError().text();
}
*/
// 插入数据
QSqlQuery insertQuery;
// insertQuery.prepare("INSERT INTO accounts (ID, money) VALUES (:id, :money)");
// insertQuery.bindValue(":id", 3); // 假设要插入的ID为3
// insertQuery.bindValue(":money", 1000); // 假设要插入的money为1000
if(insertQuery.exec("INSERT INTO account(ID, money) VALUES (3, 4000)"))
{
qDebug() << "Insert successful";
}
else
{
qDebug() << "Insert failed:" << insertQuery.lastError().text();
}
// 删除数据
QSqlQuery deleteQuery;
// deleteQuery.prepare("DELETE FROM accounts WHERE ID = :id");
//deleteQuery.bindValue(":id", 2); // 假设要删除的ID为2
if(deleteQuery.exec("DELETE FROM account WHERE ID = 2"))
{
qDebug() << "Delete successful";
}
else
{
qDebug() << "Delete failed:" << deleteQuery.lastError().text();
}
// 更新数据
QSqlQuery updateQuery;
// updateQuery.prepare("UPDATE account SET money = :money WHERE ID = :id");
// updateQuery.bindValue(":id", 3); // 假设要更新的ID为2
// updateQuery.bindValue(":money", 6666); // 假设新的money值为2000
if(updateQuery.exec("UPDATE account SET money = 1234 WHERE ID = 3"))
{
qDebug() << "Update successful";
}
else
{
qDebug() << "Update failed:" << query.lastError().text();
}
a.quit();
//return a.exec();
}
补充知识点: