Qt中MySQL数据库的操作例程
数据库连接不成功时,要将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数据库的操作例程的更多相关文章
- python中mysql数据库的操作-sqlalchemy
MySQLdb支持python2.*,不支持3.* ,python3里面使用PyMySQL模块代替 python3里面如果有报错 django.core.exceptions.ImproperlyC ...
- 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...
- django 中连接mysql数据库的操作步骤
django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...
- zabbix数据库mariadb从服务器迁移到云mysql数据库的操作
zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...
- 更改XAMPP中MySQL数据库的端口号
更改XAMPP中MySQL数据库的端口号 如果电脑上已安装MySql数据库,还想用XAMPP中自带的数据库就需要更改XAMPP中数据库的端口号,避免和已安装的数据库冲突.本例以更改为3307端口号为例 ...
- DBA必备:MySQL数据库常用操作和技巧
DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...
- C语言对mysql数据库的操作
原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正 ...
- Mysql数据库基础操作
Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...
- php中关于数据库的操作
php中对数据库的操作,举例如下: //连接到本地mysql数据库 $myconn=mysql_connect("localhost","root"," ...
随机推荐
- python函数中的参数类型
python函数中的参数 动态获取函数的参数 python的函数类型详解
- ARTS Week 10
Dec 30, 2019 ~ Jan 5, 2020 Algorithm Problem 88 Merge Sorted Array (合并两个有序数组) 题目链接 题目描述:给定两个有序数组 num ...
- num12---组合模式
案例描述: 学校下有多个学院,每个学院下有多个专业系. 把学校.院系.专业 全都看成某个组织类型,含有添加add方法,删除remove方法,显示print方法. 如果有新增的院系.专业,新增加对应的 ...
- python练习——第1题
原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激 ...
- oracle怎么建立本地连接
sqlplus连接oracle数据库(连接本地oracle数据库和连接远程的oracle数据库) 虽然我们现在平时都是使用PLSQL Developer这个软件工具了,但是我们还是要了解sqlplus ...
- NR / 5G - MAC Scheduler
- Apache 日志记录相关设置
小编最近在配置Apache 服务器啊 就把遇到的信息给记录下来 Apache 自动生成的日志会给系统带来很大的损耗.关闭日志以后,甚至最高可以提高整体性能近40%(粗略估计) 那么如何关闭日志呢? 可 ...
- 如何开始阅读ASP.NET Core源代码
背景 当我们对ASP.Net Core内部的某些方法.类的实现感兴趣时,有很多方法可以去了解,看书,看各种文章,但是最直接也是最深入的办法就是去阅读源代码.ASP.NET Core的源代码托管在Git ...
- php 全局变量 预定义变量
//$GLOBALS 引用全局作用域中可用的全部变量 $_SERVER['SERVER_ADDR'] 返回运行脚本所在服务器的IP地址 $_SERVER['SERVER_NAME'] 返回运行脚本所在 ...
- gitlab(五):一个开发流程实例
一个多人开发的样例 开发的流程我们都知道: 根据项目版本,创建里程碑,创建开发的issue,分配给dev dev从master clone代码,创建分支就行开发,开发完成之后,提交分支 dev给开发负 ...