【qt】windows下qt连接数据库

news2024/11/14 15:43:20

1.新建数据库

create database mydatabase;

在这里插入图片描述

2.新建表结构,并插入数据

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d80754b5eeb24f59a9ba57583093972c.png

3.qt下连接数据库

1.连接数据库,需要加sql
在这里插入图片描述

2.添加QsqlDatabase头文件,使用提示句柄,头文件QMessageBox

在这里插入图片描述

3.连接数据库

在这里插入图片描述

4.界面设计

在这里插入图片描述

5.插入实现
在这里插入图片描述

注意这里如果是插入失败的话,说明你的qt中没有mysql对应的驱动,需要自己下载
mysql驱动链接
注意对应你自己的qt版本
下载好将驱动放到
在这里插入图片描述
在这里插入图片描述
6.查询
在这里插入图片描述

4.演示

qt连接数据库

5.代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QSqlDatabase>
#include<QMessageBox>
#include<QSqlQuery>
#include<qDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_insertbutton_clicked();

    void on_findbutton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//定义对象添加数据库

    db.setHostName("localhost");            //数据库所在的ip地址
    db.setDatabaseName("mydatabase");          //使用的数据库名称
    db.setUserName("root");                     //用户名
    db.setPassword("15529398397");             //用户密码
    db.setPort(3306);                          //数据库端口号

    if(db.open())                               //qt连接数据库成功
    {

       QMessageBox::information(this,"连接提示","连接成功");


    }
    else                                      //连接失败
     {

         QMessageBox::warning(this,"连接提示","连接失败");



    }

}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_insertbutton_clicked()
{

    QString id=ui->id->text();
    QString name=ui->name->text();
    QString birth=ui->birth->text();

    QString sql=QString("insert into student values (%1, '%2' ,'%3');").arg(id).arg(name).arg(birth);
    QSqlQuery query;
    if(query.exec(sql))
    {
      QMessageBox::information(this,"插入提示","插入成功");

    }
    else
       {

        QMessageBox::information(this,"插入提示","插入失败");

    }


}

void Widget::on_findbutton_clicked()
{

    QSqlQuery query;
    query.exec("select * from student");
    while(query.next())
    {
       qDebug()<<query.value(0);
       qDebug()<<query.value(1);
       qDebug()<<query.value(2);




    }






}

6.使用tableview控件显示查询

1.界面设计
在这里插入图片描述
2.代码实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.演示

8.代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QSqlDatabase>
#include<QMessageBox>
#include<QSqlTableModel>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_selectbutton_clicked();

private:
    Ui::Widget *ui;
    QSqlTableModel* m;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//定义对象添加数据库

    db.setHostName("localhost");            //数据库所在的ip地址
    db.setDatabaseName("mydatabase");          //使用的数据库名称
    db.setUserName("root");                     //用户名
    db.setPassword("15529398397");             //用户密码
    db.setPort(3306);                          //数据库端口号

    if(db.open())                               //qt连接数据库成功
    {

       QMessageBox::information(this,"连接提示","连接成功");
       m=new QSqlTableModel;
       m->setTable("student");
       ui->tableView->setModel(m);


    }
    else                                      //连接失败
     {

         QMessageBox::warning(this,"连接提示","连接失败");



    }
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_selectbutton_clicked()
{
    m->select();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盛水最多的容器问题

目录 一题目概述&#xff1a; 二思路理解&#xff1a; 三解答代码&#xff1a; 一题目概述&#xff1a; leetcode链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二思路理解&#xff1a; 首先这道题虽然看起来简单&#xff0c;很难不让人想到直接暴力破解它&a…

【操作系统】12.文件系统是怎么管理的?

2.文件系统是怎么管理的&#xff1f; 2.1 文件系统的实现 2.1.1 文件系统层次结构 用户调用接口 文件目录系统 存取控制验证模块 逻辑文件系统与文件信息缓冲区 物理文件系统 辅助分配模块 设备管理程序模块 2.1.2 目录实现 线性列表 哈希表 2.1.3 文件实现 文件分配方式 连续…

Unity射击游戏开发教程:(32)控制子弹射速

显示发射速度从较慢到较快的变化 这是一篇关于如何实现射速以防止玩家乱按射击按钮的快速文章。 通常做法 说到要控制子弹的射速,可以通过以下几种方法: 通过设置子弹的发射间隔时间来控制射速。在每次子弹发射后,设置一个时间延迟,确保下一枚子弹不能立即发射。 利用计时…

Redis下载安装使用教程图文教程(超详细)

《网络安全自学教程》 Redis下载安装使用 1、下载安装2、基础配置2.1、远程连接2、保护模式3、默认密码4、后台运行4.1 验证服务是否启动4.2 停止服务 1、下载安装 1&#xff09;到Redis中文网 https://www.redis.com.cn/download.html 下载Redis安装包 2&#xff09;Redis的安…

市场动荡!宝马「赶超」特斯拉?华为打响高阶智驾「价格战」

新能源汽车市场正在进入动荡期。 本周&#xff0c;欧洲市场传来重磅消息&#xff0c;宝马在欧洲的电动汽车销量首次超过特斯拉。根据JATO Dynamics的数据&#xff0c;7月宝马在欧洲本土市场销售了14,869辆电动汽车&#xff0c;以308辆的微弱优势首次超过特斯拉。 数据显示&…

“蓝屏事件”阴魂不散,微软安全更新导致 Linux 系统无法启动即解决方案

最近&#xff0c;众多Linux用户报告称他们的设备在尝试启动时&#xff0c;收到了一条神秘的错误消息&#xff1a;“系统出了严重问题。”这起事件的罪魁祸首是微软在月度安全更新中发布的一个补丁&#xff0c;用于修复一个存在已久的GRUB漏洞。 这次更新却导致了Linux和Windows…

Adobe InDesign(ID)专业的排版设计软件win/mac软件下载安装和快捷键的使用

一、Adobe InDesign软件概述 1.1 软件简介 Adobe InDesign是Adobe Systems公司开发的一款面向印刷和数字媒体出版物的专业排版设计软件。它广泛应用于书籍、杂志、报纸、宣传册、海报、广告、电子书等多种出版物的设计与制作中。InDesign以其强大的排版功能、灵活的页面布局工…

7 款最佳软件,可恢复从回收站中删除的文件

您是否曾经从回收站中删除了文件并想要恢复它们&#xff1f;这似乎是不可能的。 但是&#xff0c;从技术上讲&#xff0c;永久删除的文件不会从您的硬盘驱动器存储中删除&#xff0c;而是更改为无法识别的数据并被您的新文件覆盖。 这使您能够从系统中恢复永久删除的文件。 …

Verdi中快速查找define宏定义及其active/inactive状态

可以通过如下方式查看&#xff1a; 打开verdi后 通过 菜单栏tools -> vc apps toolbox 在VC apps toolbox 中选择Utility-》macro utility &#xff1a; 用macro utility中的三个工具分别打印报告&#xff08;各自针对不同的宏&#xff09;。生成的log文件中会显示宏定义的…

VMware上Linux系统报错--mount: 在 /dev/sr0 上找不到媒体【解决办法】

问题背景 在VMware上使用CentOS7系统&#xff0c;想要在CentOS7系统上挂载一个镜像文件&#xff0c;在系统下使用mount命令挂载报错如下所示&#xff1a; 解决办法 用lsblk命令查看sr0设备是存在的 查看虚拟机侧问题&#xff0c;右键虚拟机&#xff0c;点击设置 镜像文件已选…

宝塔面板部署雷池社区版教程

宝塔面板部署雷池社区版教程 简单介绍一下宝塔面板&#xff0c;安全高效的服务器运维面板&#xff0c;使用宝塔面板的人非常多 在网站管理上&#xff0c;许多用户都是通过宝塔面板进行管理&#xff0c;宝塔面板的Nginx默认监听端口为80和443&#xff0c;这就导致共存部署时雷…

AIGC大模型应用教学平台

1、基本介绍 AIGC大模型应用技术实训平台是我公司针对高校开设的《AIGC大模型应用技术》课程配套的实训平台。该平台采用最新的AI推理加速芯片&#xff0c;提供30Tops算力和32GB存储&#xff0c;能够运行常见的大语言模型如ChatGLM2、Llama2、Baicuan、Mistral等&#xff0c;也…

vue2 part3

vscode安装vue3 snippets 天气案例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>姓名案例_插值语法实现</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js&q…

【Linux】分析一段oom及oops报错日志

oom相关日志分析: Oom-killer错误是因系统内存分配不足&#xff0c;为保障系统正常运行会随机kill掉占用较多的内存进程。 该日志已经输出内存占满相关提示&#xff0c;内存上限为16G&#xff0c;当前已使用16G&#xff0c;内存限制导致分配失败次数为586755次。 OOPS相关日志…

24年最新最详细Python安装教程,附安装包!感觉收藏!

Python由荷兰国家数学与计算机科学研究中心的吉多范罗苏姆于1990年代初设计&#xff0c;作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语法和动态类型&#xff0c;以及解释型语言的本质&#xff0c;使它成为多…

centos7解决病毒入侵 getty

首先使用top命令查看 找到文件地址 查看是否有自启动服务 关闭、停止、删除 tmp 病毒文件删除 清除标记 [roothost-192-168-0-66 bin]# chattr -ia /tmp/newsvc.sh [roothost-192-168-0-66 bin]# chattr -ia /tmp/redis2 [roothost-192-168-0-66 bin]# chattr -ia /tmp/svc* [r…

《黑神话:悟空》WeGame标准版和豪华版有啥区别?

黑神话悟空标准版和豪华版有什么区别&#xff1f;码笔记&#xff1a;标准版价格268元只是完整游戏&#xff0c;豪华版价格328在标准版的基础上另外提供兵器铜云棒、披挂百戏傩面、百戏护手、百戏衬钱衣、百戏吊腿、珍玩&#xff1a;风铎和游戏音乐精选集&#xff0c;详细如下&a…

使用DropZone+SpringBoot实现图片的上传和浏览

经常在项目中需要使用上传文件功能&#xff0c;找了不少前端上传组件&#xff0c;都不是很好用&#xff0c;今天尝试了一下DropZone&#xff0c;发现不错&#xff0c;顺便记录一下使用过程&#xff0c;方便后续查阅。在做开发的时候&#xff0c;经常需要调研一些技术&#xff0…

web渗透:SQL注入漏洞的基础知识

目录 SQL注入漏洞的定义和原理 SQL注入的类型和攻击方法 SQL注入的防御措施 示例代码 深入研究 SQL注入漏洞的常见攻击场景有哪些&#xff1f; 如何有效防范SQL注入攻击&#xff1f; SQL注入与跨站脚本攻击&#xff08;XSS&#xff09;之间有什么区别&#xff1f; 主要…

Together规则引擎

Together规则引擎是一个基于Web的应用程序&#xff0c;用于构建可解释和可跟踪的业务规则。使用简单的图形用户界面&#xff0c;业务和IT用户可以协作指定需求和规则逻辑。这些完全指定的规则可以直接自动化。Together规则引擎基于规则模型和符号(DMN)开放标准&#xff0c;确保…