MFC对数据库的操作---MYSQL

1 篇文章 0 订阅

目录

在mysql数据库中创建所需要的表

创建数据库

创建表

配置项目环境

​编辑在vs中配置包含目录、引用目录、库目录和附加依赖项

添加库文件

添加头文件

实现对数据库的操作

打开数据库

数据增删改查

关闭数据库

整体代码

示例 

注意事项


在mysql数据库中创建所需要的表

创建数据库

CREATE DATABASE mfc_study;

创建表

CREATE TABLE person(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT 
);

INSERT INTO person VALUES (2,"张三",18);#数据查询语句

SELECT *FROM person;

DELETE FROM person ;

配置项目环境

根据mysql的位数确定需要用64位还是32位编译

mysql -V;//在cmd中确认mysql是32位还是64位

在vs中配置包含目录、引用目录、库目录和附加依赖项

包含路径:...\MySQL\MySQL Server 8.0\include

引用路径:...\MySQL\MySQL Server 8.0\lib

库目录:...\MySQL\MySQL Server 8.0\lib

 附加依赖项:libmysql.lib

添加库文件

两个库文件:libmysql.dll、libmysql.lib,将库文件添加到项目当中

添加头文件

#include <winsock.h>   //本地数据库不需要
#include<mysql.h>

实现对数据库的操作

vs中创建一个mfc解决方案,对话框模式

打开数据库

if (!mysql_real_connect(&m_DatabaseName, 
                        "localhost", 
                        "root",
                        "123456", 
                        "mfc_study", 
                        3306, NULL, 0)) {
		AfxMessageBox(_T("数据库连接失败"));
		return;

	}

数据增删改查

char query[100];
	sprintf_s(query, "insert into person(id, name, age) values(%d, \'%s\', %d)",
		id, name, age);
	if (mysql_query(&m_DatabaseName, query)==0) {
		AfxMessageBox(_T("插入成功"));
	}
	else
	{
		AfxMessageBox(_T("插入失败"));
    }

关闭数据库

mysql_close(&m_DatabaseName);

整体代码

void CConnectMYSQLDlg::OnBnClickedBtninsert()  //成功
{//MFC连接到MySQL数据库
	UpdateData(TRUE);//将写到控件上的数据更新到变量当中
	//UpdateData(FALSE);//将写到变量中的数据同步到控件当中
	MYSQL m_DatabaseName;//连接到数据库
	mysql_init(&m_DatabaseName);//mysql初始化
	if (!mysql_real_connect(&m_DatabaseName, "localhost", "root", "123456", "mfc_study", 3306, NULL, 0)) {
		AfxMessageBox(_T("数据库连接失败"));
		return;

	}

	mysql_query(&m_DatabaseName, "SET NAMES 'GB2312'"); //m_DatabaseName是MYSQL类型*******
	CString idStr ,nameStr,ageStr;
	m_Id.GetWindowText(idStr);
	m_Name.GetWindowText(nameStr); 
	m_Age.GetWindowText(ageStr);

	int id=_ttoi(idStr);//获取id
	char* name = (char*)nameStr.GetBuffer();//获取name
	int age = _ttoi(ageStr);//获取age
	/*===============防呆(没啥用)===========*/
	if (idStr.IsEmpty())
	{
		AfxMessageBox(_T("学号不能为空"));
		return;
	}
	if (nameStr.IsEmpty()) {
		AfxMessageBox(_T("姓名不能为空"));
		return;
	}
	if (ageStr.IsEmpty()) {
		AfxMessageBox(_T("年龄不能为空"));
		return;
	}
	/*===============防呆(没啥用)===========*/
	char query[100];
	sprintf_s(query, "insert into person(id, name, age) values(%d, \'%s\', %d)",
		id, name, age);
	if (mysql_query(&m_DatabaseName, query)==0) {
		AfxMessageBox(_T("插入成功"));
	}
	else
	{
		AfxMessageBox(_T("插入失败"));
	}
	mysql_close(&m_DatabaseName);
	// TODO: 在此添加控件通知处理程序代码
}

示例 

注意事项

1、最好使用多字节字符集,否则会出现乱码

2、如果要保存中文,需要用到如下代码,否则会插入失败

mysql_query(&m_DatabaseName, "SET NAMES 'GB2312'"); //m_DatabaseName是MYSQL类型*******

3、如果设置了主键,主键不能重复,否则会插入失败

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值