MFC—MySQL数据库的应用

1、环境配置,将Mysql里面(C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib)的libmysql.lib拷贝到MFC的工程目录下(即:工程为MfcMysql,则拷贝到E:\MfcMysql\MfcMysql这个目录下),然后在对工程属性进行如下设置
MFC—MySQL数据库的应用_第1张图片
MFC—MySQL数据库的应用_第2张图片
MFC—MySQL数据库的应用_第3张图片
MFC—MySQL数据库的应用_第4张图片
2、程序
设计一个登录注册的程序
(1)登录界面
MFC—MySQL数据库的应用_第5张图片

CString m_account;//用户名
CString m_password;//密码

头文件添加以下文件

#include 
#include "mysql.h"
void DlgLogin::OnBnClickedLoginBtn()
{
	// TODO:  在此添加控件通知处理程序代码
	UpdateData(true);

	MYSQL mysqlCon;
	if (m_account.IsEmpty() || m_password.IsEmpty())
	{
		MessageBox(_T("用户名和密码不能为空!"), _T("登录提示"));
		return;
	}
	mysql_init(&mysqlCon);
	if (!mysql_real_connect(&mysqlCon, "localhost", "root", "123456", "test", 3306, NULL, 0))
	{
		MessageBox(_T("数据库连接失败!"));
		return;
	}
	else
	{
		UpdateData(true);
		mysql_query(&mysqlCon, "set names'GB2312'");
		char select[1000];
		sprintf_s(select, "select name,passwd from labstudentinfo");
		mysql_real_query(&mysqlCon, select, (unsigned long)strlen(select));

		int i = 0;
		MYSQL_ROW row;
		MYSQL_RES *result;
		result = mysql_store_result(&mysqlCon);
		//选择数据库中的用户和密码,判断是否和编辑框中的用户密码相同
		while((row = mysql_fetch_row(result)))
		{
			char* Name = row[0];
			char* Passwd = row[1];
			if ((m_account == Name) && (m_password == Passwd))
			{
				loginName = Name;
				EndDialog(0);
				CStudentInfoDlg studentInfodlg;
				studentInfodlg.DoModal();
			}
		}
	}
	mysql_close(&mysqlCon);
}

注册界面
MFC—MySQL数据库的应用_第6张图片
分别修改每个编辑框的ID,然后添加相应的变量

//注册信息
void DlgRegister::OnBnClickedRegisButton()
{
	// TODO:  在此添加控件通知处理程序代码

	UpdateData(true);
	MYSQL mysqlCon;
	if (m_name.IsEmpty() || m_sex.IsEmpty() || m_nation.IsEmpty() || m_birthPlace.IsEmpty() || m_studentId.IsEmpty() || m_birthDate.IsEmpty()
		|| m_email.IsEmpty() || m_phone.IsEmpty() || m_address.IsEmpty() || m_passwd.IsEmpty() || m_confirmPasswd.IsEmpty())
	{
		MessageBox(_T("信息没有填完整"), _T("提示"));
		return;
	}
	if (m_passwd != m_confirmPasswd) //密码不一致
	{
		MessageBox(_T("两次密码不一致"), _T("提示"));
		return;
	}
	//数据库连接
	mysql_init(&mysqlCon);
	if (!mysql_real_connect(&mysqlCon, "localhost", "root", "123456", "test", 3306, NULL, 0))
	{
		MessageBox(_T("数据库连接失败"));
		return;
	}
	else
	{
		//UpdateData(true);
		mysql_query(&mysqlCon, "set names 'GB2312'");
		char *Name = (char*)m_name.GetBuffer();
		char *Sex = (char*)m_sex.GetBuffer();
		char *Nation = (char*)m_nation.GetBuffer();
		char *BirthPlace = (char*)m_birthPlace.GetBuffer();

		char *StudentID = (char*)m_studentId.GetBuffer();
		char *BirthDate = (char*)m_birthDate.GetBuffer();
		char *Email = (char*)m_email.GetBuffer();
		char *Phone = (char*)m_phone.GetBuffer();

		char *Address = (char*)m_address.GetBuffer();
		char *Passwd = (char*)m_passwd.GetBuffer();
		char *ConfirmPasswd = (char*)m_confirmPasswd.GetBuffer();

		char insert[1000];
		sprintf_s(insert, "insert into labstudentinfo(studentID,name,sex,nation,birthPlace,birthDate,email,phone,address,passwd,confirmPasswd) values(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')",
			StudentID, Name, Sex, Nation, BirthPlace, BirthDate, Email, Phone, Address, Passwd, ConfirmPasswd);
		if (mysql_query(&mysqlCon, insert) == 0)
		{
			MessageBox(_T("插入成功"));
		}
		else
		{
			MessageBox(_T("插入失败"));
			return;
		}
	}
	UpdateData(false);
	mysql_close(&mysqlCon);
}

选择mysql数据的另一种方法


		CString select = _T("select* from labstudentinfo where str_to_date(CheckInTime,'%Y-%m-%d') = '") + curDate+_T("'");
		USES_CONVERSION;
		char* s = T2A(select.GetBuffer(0));
		select.ReleaseBuffer();
		mysql_query(&mysqlCon, s);

3、简单语句
(1)增

insert into students(name,sex,age) values ('张三','男','20') //添加具体值
"insert into students(name,sex,age) values(\'%s\',\'%s\',\'%s\')",m_name,m_sex,m_age //添加变量

(2)删

delete from students where name='张三'

(3)查

select * from students  //查询全部
select * from students  where age between 18 and 22

(4)改

update students set sex='女',age= '21' where 姓名='张三'
update students set sex='女',where 姓名='张三' and birthDate = '20'
(update students set sex= '") + m_sex+ _T("',age= '女' where name= '") + m_name+ _T("'") //更新的数据是变量

你可能感兴趣的:(MFC)