1、环境配置,将Mysql里面(C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib)的libmysql.lib拷贝到MFC的工程目录下(即:工程为MfcMysql,则拷贝到E:\MfcMysql\MfcMysql这个目录下),然后在对工程属性进行如下设置
2、程序
设计一个登录注册的程序
(1)登录界面
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);
}
//注册信息
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("'") //更新的数据是变量