qt与mysql连接之后的删除操作_Qt + 数据库连接+插入+删除+遍历

本文介绍了在Qt中如何连接MySQL数据库,并演示了创建表、插入数据、遍历查询及执行删除操作的过程。特别强调了在编写SQL语句时要注意语法正确性,避免因拼写错误导致的问题。同时,文章提供了事务处理的示例,展示了如何在删除操作中使用开始事务、提交和回滚来确保数据的安全。
摘要由CSDN通过智能技术生成

在使用SQL语句的时候,先在识别SQL语句的环境中写好,再复制过去,之前就因为create 少写了个字母,查了近半小时的时间,才查出来。

项目工程目录:

5392ee96211ba1e3921c6df76300bbac.png

database.pro

#-------------------------------------------------

#

# Project created by QtCreator 2019-07-12T07:31:08

#

#-------------------------------------------------

QT += core gui sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = 01_database

TEMPLATE = app

SOURCES += main.cpp\

mywidget.cpp

HEADERS += mywidget.h

FORMS += mywidget.ui

mywidget.h:

#ifndef MYWIDGET_H

#define MYWIDGET_H

#include

namespace Ui {

class MyWidget;

}

class MyWidget : public QWidget

{

Q_OBJECT

public:

explicit MyWidget(QWidget *parent = 0);

~MyWidget();

private slots:

void on_buttonDelete_clicked();

void on_buttonSure_clicked();

void on_buttonCancel_clicked();

private:

Ui::MyWidget *ui;

};

#endif // MYWIDGET_H

mywidget.cpp:

#include "mywidget.h"

#include "ui_mywidget.h"

#include

#include

#include

#include

#include //专门对SQL语句操作的类

#include

MyWidget::MyWidget(QWidget *parent) :

QWidget(parent),

ui(new Ui::MyWidget)

{

ui->setupUi(this);

//打印Qt支持的数据库驱动

qDebug()<<:drivers>

//添加MySql数据库

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

//连接数据库

db.setHostName("127.0.0.1");//数据库服务器IP

db.setUserName("root");//数据库用户名

db.setPassword("123");//密码

db.setDatabaseName("studentmanager");//使用哪个数据库

//打开数据库 只有打开数据库才能进行下面的操作: 增 删 改 查

if(db.open() == false)

{

QMessageBox::warning(this,"错误",db.lastError().text());

return;

}

/*

QSqlQuery query;

query.exec("create table student(id int primary key auto_increment,name varchar(255) ,age int ,score int )");//这里添加SQL语句创建表

*/

#if 0

/*当存在添加多个库的时候,

*

*/

QSqlDatabase db1 = QSqlDatabase::addDatabase("QMYSQL","a");

//连接数据库

db.setHostName("127.0.0.1");//数据库服务器IP

db.setUserName("root");//数据库用户名

db.setPassword("123");//密码

db.setDatabaseName("text");//使用哪个数据库

//打开数据库

if(db.open() == false)

{

QMessageBox::warning(this,"错误",db.lastError().text());

return;

}

QSqlQuery query1(db1);//将db1传进query

query1.exec("create table student(id int primary key auto_increment,name varchar(255) ,age int ,score int )");//创建表

#endif

//插入

QSqlQuery query;

query.exec("insert into student(id ,name, age,score) values (1,'mike',18,59);");

/*批量插入 ,有两种风格*/

#if 0

//odbc风格

//1、预处理语句 ?相当于占位符(此时还不知道里面要填什么内容,先占位置)

QSqlQuery query1;

query1.prepare("insert into student(name, age,score) values (?,?,? );");

//给字段设置内容 list

QVariantList nameList;

nameList <

QVariantList ageList;

ageList <<11<<22<<33;

QVariantList scoreList;

scoreList<<59<<69<<79;

//给字段绑定相应的值 按顺序绑定(否则会出错)

query1.addBindValue(nameList);

query1.addBindValue(ageList);

query1.addBindValue(scoreList);

//执行预处理命令

query1.execBatch();

#endif

#if 0

//oracle 风格

//占位符 : + 自定义名字

QSqlQuery query2;

query2.prepare("insert into student(name, age,score) values (:name,:age,:score );");

//给字段设置内容 list

QVariantList nameList;

nameList <

QVariantList ageList;

ageList <<12<<22<<32;

QVariantList scoreList;

scoreList<<52<<62<<72;

//给字段绑定 这里就没有顺序了

query2.bindValue(":name",nameList);

query2.bindValue(":score",scoreList);

query2.bindValue(":age",ageList);

//执行预处理命令

query1.execBatch();

#endif

/*查找元素

*/

QSqlQuery query4;

query4.exec("select * from student");

//query4.exec("select * from student where name = "xiao1");//选择确定的某一个人

while(query4.next())//一行一行的遍历

{

//取出当前行的内容

qDebug()<

<

<

<

}

}

MyWidget::~MyWidget()

{

delete ui;

}

//删除按钮

void MyWidget::on_buttonDelete_clicked()

{

//获取编辑区的内容

QString name = ui->lineEdit->text();

QString str = QString("delete from student where name = '%1';").arg(name);//删除数据库语句:delete from student where name = 'mike';

//开启一个事务 通过database()函数可以确定操作哪一个数据库

QSqlDatabase::database().transaction();

QSqlDatabase query3;

query3.exec(str);

}

//确定删除

void MyWidget::on_buttonSure_clicked()

{

//确定删除

QSqlDatabase::database().commit();

}

void MyWidget::on_buttonCancel_clicked()

{

//回滚,撤销

QSqlDatabase::database().rollback();

}

mywidget.ui:

84b99ecd04268f2b89c21c0904619788.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值