数据库连接不成功时,要将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. 家用联通光纤开启IPv6

    前提是地区运营商支持提供IPv6地址,并且是用联通光猫进行拨号上网. 原文在我的开源中国博客 https://my.oschina.net/finchxu/blog/3165614 注意,阅读以下内容 ...

  2. [css]画圆形标签

    画圆形标签的窍门: 圆形是在padding和margin中间同时是padding的内切圆也是margin的外接圆 .circle{ width: 20px; height: 20px; display ...

  3. HDU_1494_dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1494 能量用0-14表示,dp[i][j]表示走到第i段,所剩能量j的最小时间. #include<ios ...

  4. It is possible and safe to monitor a table DML history on sqlserver

    He is my test step: In a test enviroument, I make a table "test"/ demo table:create table ...

  5. 导出Chrome浏览器中保存的密码

    title: 导出Chrome浏览器中保存的密码 date: 2018-02-11 17:54:51 tags: --- 导出Chrome浏览器中保存的密码 先知看到的,挺有意思,记录一下 不同浏览器 ...

  6. 分组密码CBC加密缺陷

    title: 分组密码CBC加密缺陷 date: 2017-05-15 10:04:47 tags: ["密码学"] --- 关于密码学的种种漏洞以及利用网上也有不少,但是比较零散 ...

  7. iRedmail的php由5.4升级到5.6

    安装ireadmail时,自带的php是5.4,打算升级到5.6. 升级前注意备份原来的/etc/php-fpm.d下的www.conf,文件内容如下: [inet] user = nginx gro ...

  8. ImportError: DLL load failed: 找不到指定的模块;ImportError: numpy.core.multiarray failed to import 报错解决

    python程序运行出错,出错的两行主要信息如下: ImportError: DLL load failed: 找不到指定的模块 ImportError: numpy.core.multiarray ...

  9. 十篇笔记走向Python测试开发之路四(字典)

    字典 字典(dict)是Python的一种内置的数据结构.在其他语言中也称为map,使用键-值(key-value)存储,可以通过查找某个特定的词语(键 key),从而找到他的定义(值 value) ...

  10. TomCat控制台中文乱码及IDEA设置为UTF-8

    一.解决IDEA中的中文乱码 1.首先设置idea编辑器的编码: File-Setting设置如下 idea显示编码:windows默认用gbk所以idea显示默认为gbk编码,在 Help--Edi ...