数据库连接不成功时,要将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. C++调用DLL方法

    调用的原理: 调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同.Windows提供了两种将DLL映像到进程地址空间的方法:隐式 ...

  2. android studio闪退的原因

    可能是因为某个监听的问题,比如没有把Mainacticity中定义的button和布局文件中的按钮控件关联起来,就会出现这个问题

  3. 2019icpc西安邀请赛

    来源:https://www.jisuanke.com/contest/2625?view=challenges 更新中 A.Tasks 直接贪心 代码:听说当时很多队伍提前拆题甚至上机了,所以很多0 ...

  4. How to do if sqlserver table identity column exceed limited ?

    script: select a.TABLE_NAME,a.COLUMN_NAME,a.DATA_TYPE, (CASE a.DATA_TYPE when 'int' then 'limited be ...

  5. linux入门系列12--磁盘管理之分区、格式化与挂载

    前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...

  6. qt creator源码全方面分析(2-10-1)

    目录 Getting and Building Qt Creator 获取Qt 获取和构建Qt Creator Getting and Building Qt Creator 待办事项:应该对此进行扩 ...

  7. 开源堡垒机jumpserver的安装

    开源跳板机jumpserver安装 简介 Jumpserver 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统 Jumpserver 使用Pyt ...

  8. OSPF理论

    OSPF简介 OSPF(Open Shortest Path First 开放式最短路径优先)协议是IETF为IP网络开发的IGP路由选择协议.它是一种典型的链路状态(link-state)路由协议. ...

  9. 前端工具配置(webpack 4、vue-cli 3)

    随着前端项目复杂度的增加,其所依赖的资源也越来越多,从最初的HTML文件,CSS文件,JS文件发展到现在的各种预处理文件,模板文件等等.文件多了,项目大了,项目的维护就变得更加困难了,用户加载页面的速 ...

  10. Linux 报错:syntax error "C" 解决办法(此处选择bash系统)

    出现此问题的原因,是由系统的兼容性引起的,linux下默认了指向dash而非bash. linux下Dash改Bash: 1.先查看是使用哪个shell ls -al /bin/sh 2.#如果是Da ...