连接数据库
首先要连接自己在电脑上安装的MySql的数据库(这个是最难也是最重要的一步,万事起步难),连接上了之后的Sql语句就会就会非常简单了,连接数据库可以参考这篇博客(注意在连接时会有可能会有很多报错信息,但是只要按照这个操作来,一步一步操作应该没有问题。)
Qt编译MySQL数据库驱动_焕小谢的博客-CSDN博客_qt编译mysql驱动
注意在操作完这些操作后不要直接点构建,
要点重新构建所有项目(我因为这个问题弄了好久😭😭😭)。
增删改查(MySql)
首先在xxx.pro文件中加入sql模块。
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QSqlDatabase>
#include <QStringList>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 1. 添加一个数据库实例
QStringList ls = QSqlDatabase::drivers();
qDebug() << ls;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 2. 得到实例对象之后需要初始化连接信息
// -- 服务器的IP, 端口, 数据库名, 用户名, 密码
db.setHostName("localhost");
db.setPort(3306); // 如果使用的是默认端口, 可以不调用该函数
db.setDatabaseName("student");//这是我自己建的表的名字,要看自己在DBMS上面建了什么表。
db.setUserName("root");//root用户
db.setPassword("123456");//密码
// 3. 连接数据库
bool bl = db.open();
if(!bl)
{
qDebug() << db.lastError().text();
return;
}
else
{
// qDebug() << "数据库连接成功了...";
QMessageBox::information(this, "succeed", "hahah");
}
QSqlQuery query;
// 4. 插入数据
// QString sql = "insert into dept values(23, '火影忍者', '东京')";
// QString sql = "select * from student";
// 开启事务
// db.transaction();
// bool flag = query.exec(sql);
// if(flag)
// {
// db.commit();
// }
// else
// {
// db.rollback();
// }
// // 5. 查询数据表 - dept
// query.exec("select * from score");
// 遍历结果集
while(query.next())
{
// 从当前记录中取出各个字段的值
// qDebug() << query.value(0).toString()
// << query.value(1).toString()
// << query.value("dname").toString()
// << query.value("loc").toString();
QString sno = query.value(0).toString();
QString cno = query.value(1).toString();
QString tno = query.value(2).toString();
double grade = query.value(3).toDouble();
qDebug()<<sno<<" "<<cno<<" "<<tno<<" "<<grade;
}
db.close();
}
Widget::~Widget()
{
delete ui;
}
增删改查其实就利用这个模板来操作了,这个时候就要看你的MqSql的功底了。
query.exec("insert into student values(......)");//增
query.exec("DELETE FROM table_name [WHERE Clause]");//删除
query.exec("UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]");//更新
query.exec("select * from score");//查询