数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin下面

.h文件

 #ifndef MYWIDGET_H
#define MYWIDGET_H #include <QWidget>
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList> namespace Ui {
class MyWidget;
} class MyWidget : public QWidget
{
Q_OBJECT public:
explicit MyWidget(QWidget *parent = );
~MyWidget(); private slots:
void on_sureButton_clicked(); void on_cancelButton_clicked(); void on_delButton_clicked(); private:
Ui::MyWidget *ui;
QSqlDatabase mySqldata; }; #endif // MYWIDGET_H

.cpp实现文件

 #include "mywidget.h"
#include "ui_mywidget.h" MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this); qDebug() << QSqlDatabase::drivers();//查询支持的数据库类型
/******************************************对数据库中的fzx数据库进行操作*************************************************/
/******************************************对数据库中的fzx数据库进行操作*************************************************/
mySqldata = QSqlDatabase::addDatabase("QMYSQL","a");//添加MySQL数据库
mySqldata.setHostName("127.0.0.1");
mySqldata.setPort();
mySqldata.setUserName("root");
mySqldata.setPassword("FZX13752228127");
mySqldata.setDatabaseName("fzx");
mySqldata.open();
if(!mySqldata.open())
{
QMessageBox::warning(this,"错误",mySqldata.lastError().text());
return;
}
QSqlQuery query(mySqldata);//绑定要访问的数据库
query.exec(" create table student(id int primary key auto_increment, name varchar(255), age int, score int);");
//插入单条数据
query.exec(" insert into student(id, name, age, score) values(1, 'mike', 18, 76);");
//批量插入数据
/**************************obdc风格批量插入数据******************************************************************** //预处理语句
query.prepare(" insert into student(name, age, score) values(?, ?, ?);");
//给字段设置内容 list
QVariantList nameList,ageList, scoreList;
nameList << "张三" << "李四" << "王五";
ageList <<11 <<45 <<66;
scoreList << 59 << 69 << 79;
//给字段绑定相应的值,按顺序绑定;id号自动添加
query.addBindValue(nameList);
query.addBindValue(ageList);
query.addBindValue(scoreList);
//执行预处理命令
query.execBatch();
*************************************************obdc风格批量插入数据**************************************************/ /*********************************************oracle风格批量插入数据***************************************************/ //预处理语句:占位符: +自定义名字
query.prepare(" insert into student(name, age, score) values(:name, :age, :score);");
//给字段设置内容 list
QVariantList nameList,ageList, scoreList;
nameList << "小米" << "华为" << "三星";
ageList << << <<;
scoreList << << << ;
//给字段绑定(可以不按照顺序,有占位符: +自定义名字)
query.bindValue(":name",nameList);
query.bindValue(":age",ageList);
query.bindValue(":score",scoreList);
//执行预处理命令
query.execBatch(); /***********************************************oracle风格批量插入数据*************************************************/ //查找数据
//query.exec("select * from student");//从表中遍历每一行
query.exec("select * from student where name = '华为'");//从表中遍历name为华为的行
while(query.next())//一行一行遍历
{
//取出当前行的内容,取得时候按列来取
qDebug() << query.value().toInt()
<< query.value().toString()
<< query.value("age").toInt()
<< query.value("score").toInt(); }
//更新数据
query.exec("update student set score = 100 where name = '华为'");
/******************************************对数据库中的fzx数据库进行操作*************************************************/
/******************************************对数据库中的fzx数据库进行操作*************************************************/ /******************************************对数据库中的test数据库进行操作*************************************************/
/******************************************对数据库中的test数据库进行操作**************************************************
QSqlDatabase mySqldatab = QSqlDatabase::addDatabase("QMYSQL","b");//添加MySQL数据库
mySqldatab.setHostName("127.0.0.1");
mySqldatab.setPort(3306);
mySqldatab.setUserName("root");
mySqldatab.setPassword("FZX13752228127");
mySqldatab.setDatabaseName("test");
mySqldatab.open();
if(!mySqldatab.open())
{
QMessageBox::warning(this,"错误",mySqldatab.lastError().text());
return;
}
QSqlQuery queryb(mySqldatab);//绑定要访问的数据库("QMYSQL","b")中的b与a区分开了fzx和test两个数据库
queryb.exec(" create table teacher(id int primary key auto_increment, name varchar(255), age int, salary float);"); ******************************************对数据库中的test数据库进行操作**************************************************/
/******************************************对数据库中的test数据库进行操作*************************************************/
} MyWidget::~MyWidget()
{
delete ui;
} void MyWidget::on_sureButton_clicked()
{ QString name = ui->lineEdit->text();
QString delsql = QString("delete from student where name = '%1'").arg(name);//注意里面最后不带;号
//开启一个事务
QSqlDatabase::database().transaction();
QSqlQuery query(mySqldata);//绑定要访问的数据库
query.exec(delsql); }
void MyWidget::on_delButton_clicked()
{
//执行删除
QSqlDatabase::database().commit();
}
void MyWidget::on_cancelButton_clicked()
{
//回撤取消删除
QSqlDatabase::database().rollback();
}

Qt中MySQL数据库的操作例程的更多相关文章

  1. python中mysql数据库的操作-sqlalchemy

    MySQLdb支持python2.*,不支持3.* ,python3里面使用PyMySQL模块代替 python3里面如果有报错  django.core.exceptions.ImproperlyC ...

  2. 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作

    在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...

  3. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  4. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  5. 更改XAMPP中MySQL数据库的端口号

    更改XAMPP中MySQL数据库的端口号 如果电脑上已安装MySql数据库,还想用XAMPP中自带的数据库就需要更改XAMPP中数据库的端口号,避免和已安装的数据库冲突.本例以更改为3307端口号为例 ...

  6. DBA必备:MySQL数据库常用操作和技巧

    DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...

  7. C语言对mysql数据库的操作

    原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正 ...

  8. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  9. php中关于数据库的操作

    php中对数据库的操作,举例如下: //连接到本地mysql数据库 $myconn=mysql_connect("localhost","root"," ...

随机推荐

  1. Jenkins: QQ/Wechat机器人群消息通知Job构建结果

    简介 Jenkins是持续化集成的一个核心部件,它上游从仓库(gitlab)等拉取代码,经编译构建,将应用发布至下游目标环境:构建结果通知的方式有很多,现成的插件有邮件和钉钉方式,但是就方便的角度,通 ...

  2. JUC中的锁

    ★.不同角度的锁的理解: #1.公平锁.非公平锁 公平锁:eg: ReentrantLock 关键词:先来先服务. 加锁前检查是否有排队等锁的线程,若有,当前线程参与排队,先排的线程优先获取锁.相对没 ...

  3. DRF框架的安装与使用

    目录 DRF框架的安装与配置 基于restful接口规范的接口设计 DRF框架的安装与配置 """ 1)安装 >: pip install djangorestfr ...

  4. 【python-leetcode713-双指针】乘积小于k的子数组

    问题描述: 给定一个正整数数组 nums. 找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于10 ...

  5. Go语言实现:【剑指offer】复杂链表的复制

    该题目来源于牛客网<剑指offer>专题. 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.( ...

  6. Hexo部署到Gitee/Coding常见的错误

    全网最全小白搭建Hexo+Gitee/Coding 全网最全小白搭建Hexo+Gitee/Coding 本站内容已全部转移到https://www.myyuns.ltd,具体请移步到www.myyun ...

  7. Thread类的interrupted方法和isInterrupted方法的区别

    如下所示,interrupted()会改变线程的中断状态(清除),而isInterrupted()不影响线程的中断状态   /** * Tests whether the current thread ...

  8. k8s系列---service

    来源 : http://blog.itpub.net/28916011/viewspace-2214745/ service是要通过coreDNS来管理pod的. kube-proxy始终监视着api ...

  9. 非对称加密 秘钥登录 https

    非对称加密简介: 对称加密算法在加密和解密时使用的是同一个秘钥:而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)私有密钥(private key,简 ...

  10. [CSS]important提升直选标签优先级

    <style> #identity{ color: purple; } p { color: yellowgreen !important; } </style> <!- ...