数据库操作:MYSQL与MFC连接(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 继上一片博客,这篇介绍数据库与MFC的连接,上篇是介绍用控制台连接MYSQL,其实MFC为代码增加一个界面,和一些消息相应(个人认为) 首先建一个MFC的工程,我这边建了一个Dlg 建好后看一下选项-> 目录->包含目录和库目录中是否包含了MYSQL的路径 再在Dlg.cpp中添加: #include”winsock.h” #include“mys

继上一片博客,这篇介绍数据库与MFC的连接,上篇是介绍用控制台连接MYSQL,其实MFC为代码增加一个界面,和一些消息相应(个人认为)
首先建一个MFC的工程,我这边建了一个Dlg 建好后看一下选项-> 目录->包含目录和库目录中是否包含了MYSQL的路径
这里写图片描述
再在Dlg.cpp中添加:
#include”winsock.h”
#include“mysql.h”
#pragma comment(lib,”libmySQL.lib”)
这里写图片描述
然后与控制台下应用相类似:


    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;

声明一一个结构体来保存数据库操作所需要的变量
接下来是对界面的设计:
这里写图片描述
我大致设计了:
按钮:数据库连接,查表(数据库下面有那些表),表内容(表中字段的内容),插入(将需向表中字段添加内容)
edit控件:用来显示从数据库中返回的值
大致将edit控件绑定一下的变量:
这里写图片描述
接下来设置按钮的功能函数:同样在ctrl+w下选择需要的函数相应,添加(注意都在Dlg类下添加),
在连接按钮中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Onlianmysql() 
{
    // TODO: Add your control notification handler code here
    mysql_init(&mysql);
    if(mysql_real_connect(&mysql,"localhost","ra","123","student",3306,NULL,0))
    {
        AfxMessageBox("连接成功!");
    }
    else
    {
        AfxMessageBox("连接失败");
    }
}

在查表中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Onchabiao() 
{
    // TODO: Add your control notification handler code here
    sprintf(sql_query,"show tables");
    res=mysql_conn_sqlQuery(&mysql,sql_query);
    while((row=mysql_fetch_row(res))!=NULL)
    {
        m_biaoming=m_biaoming+row[0];
        m_biaoming=m_biaoming+"\r\n";
    }
    UpdateData(false);
//  AfxMessageBox("chaxunchengg");
}

在表内容按钮中添加响应函数:

void CMy1211mfcmysql2002Dlg::Onbianneirong() 
{
    // TODO: Add your control notification handler code here
    int i=0,t;
    CString query1;
    sprintf(sql_query,"select * from student");
//  query1="SET CHARACTER SET gbk"; //设置编码
    t=mysql_real_query(&mysql,query1,(unsigned int)strlen(query1));
    res=mysql_conn_sqlQuery(&mysql,sql_query);
        while((row=mysql_fetch_row(res))!=NULL)
    {
        wodetian[i].xuehao=row[0];
        wodetian[i].xingbei=row[1];
        wodetian[i].xingming=row[2];
        wodetian[i].nianling=row[3];
        wodetian[i].xibie=row[4];
        m_neirong=m_neirong+row[0]+row[1]+row[2]+row[3]+row[4]+"\r\n";
    }
    UpdateData(false);
    AfxMessageBox("chaxunchengg");
}

注:这边设置编码是因为edit控件好像不能显示utf8的编码类型所以要将输出的编码类型变成gbk,当然好像默认的latin1编码1类型,edit控件也能输出
在插入按钮中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Oncharu() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    CString xuehao=m_xuehao;
    CString xingbie=m_xingbie;
    CString xingming=m_xingming;
    CString nianling=m_nianling;
    CString xibie=m_xibie;

    CString hi="insert into student(xuehao,xingbie,xingming,nianling,xibie)values('"+xuehao+"','"+xingbie+"','"+xingming+"','"+nianling+"','"+xibie+"')";
    sprintf(sql_query,hi);
    res=mysql_conn_sqlQuery(&mysql,sql_query);
    AfxMessageBox("chaxunchengg");
}

最后就能完成基本的查表插入等操作

实验结果:
这里写图片描述
显示结果如图:
然后我向student表插入全为9的一条记录;
然后用mysql的控制台查询表内的记录结果如图:
这里写图片描述
注前面两行乱码是因为我将这个数据库创建时是用默认的Latin1,后来因为需要将mysql编码方式变为了utf8,这张表的编码方式没去改变,而且提醒一下改为utf8后在控制台下显示记录会乱码,原因是控制台显示的字符编码为gbk,这时要在查表之前加上SET CHARACTER SET gbk
在mfc上更新的话主要用到了
UpdateData(true);界面到后台
UpdateData(false);后台到界面
这里写图片描述

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
Java 关系型数据库 数据库连接
实时计算 Flink版操作报错之在使用JDBC连接MySQL数据库时遇到报错,识别不到jdbc了,怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7天前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版操作报错之同步MySQL分库分表500张表报连接超时,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之当将两个连接器放在同一个作业中时,MySQL作业无法启动,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7天前
|
关系型数据库 MySQL Apache
实时计算 Flink版操作报错之mysql整库同步到doris连接器报错,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
14小时前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
2天前
|
SQL Java 关系型数据库
Mysql 数据库基本操作
Mysql 数据库基本操作
|
6天前
|
关系型数据库 分布式数据库 数据库
【阿里云云原生专栏】云原生时代的数据库选型:阿里云RDS与PolarDB对比分析
【5月更文挑战第24天】阿里云提供RDS和PolarDB两种数据库服务。RDS是高性能的在线关系型数据库,支持MySQL等引擎,适合中小规模需求;而PolarDB是分布式数据库,具备高扩展性和性能,适用于大规模数据和高并发场景。RDS与PolarDB在架构、性能、弹性伸缩、成本等方面存在差异,开发者应根据具体需求选择。示例代码展示了如何通过CLI创建RDS和PolarDB实例。
460 0
|
7天前
|
SQL 安全 关系型数据库
MySQL数据库操作-2
MySQL数据库操作
6 0
|
7天前
|
SQL 存储 关系型数据库
MySQL数据库操作-1
MySQL数据库操作
15 0
|
7天前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之使用DTS从RDSMySQL数据库同步数据到云Kafka,增量同步数据延迟时间超过1秒。如何诊断问题并降低延迟
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。