目录
在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、如果设置了主键,主键不能重复,否则会插入失败