visual studio MFC连接MySQL
首先Navicat新建连接
然后建立数据库,建立登录所需要检验账号密码的表
visual studio 建立MFC工程,根据需求在对话框中添加所需要的控件
在项目属性中加入mysql目录路径
然后是在登录按钮事件中,写链接mysql数据库的代码,以及账号密码的验证
CString username, password;
GetDlgItemText(IDC_EDIT1_USER, username);
GetDlgItemText(IDC_EDIT2_PASS, password);
const char user[] = "root";
const char pswd[] = "123456";
const char host[] = "localhost";
const char table[] = "catering";
unsigned int port = 3306;
MYSQL_RES* res;
MYSQL_ROW row;
MYSQL mysqlCon;
if (username=="" || password=="")
{
MessageBox(_T("用户名或密码不能为空!"), _T("用户登录信息"));
return;
}
mysql_init(&mysqlCon);
if (!mysql_real_connect(&mysqlCon, host, user, pswd, table, port, NULL, 0))
{
AfxMessageBox(_T("访问数据库失败!"));
}
else
{
mysql_query(&mysqlCon, "gbk"); //设置字符集
//AfxMessageBox(_T("访问数据库成功!"));
}
CString select_sql_by_user;
select_sql_by_user.Format(_T("select username,password from staff where username = \'%s\'"), username);
int ress = mysql_query(&mysqlCon, (char*)(LPCTSTR)select_sql_by_user);
if (ress == 1)
{
AfxMessageBox(mysql_error(&mysqlCon));//排错
}
if (ress == 0) //检测查询成功
{
res = mysql_store_result(&mysqlCon);
if (mysql_num_rows(res) == 0) //查询结果为空
{
//AfxMessageBox(mysql_errno(&mysqlCon));
AfxMessageBox(_T("用户不存在"));
}
else
{
row = mysql_fetch_row(res);
CString ad = row[1];
if (password == row[1])
{
mysql_free_result(res);
MessageBox(_T("登录成功!"));
}
else
{
AfxMessageBox(_T("密码错误!"));
}
}
}
else
{
AfxMessageBox(_T("访问失败!"));
}
mysql_close(&mysqlCon);
然后就是隐藏密码,未点击你输入密码只能看到****,
先在初始化函数里面写以下语句
然后在单选控件单击事件中写以下就ok了
void CCCateringManageDlg::OnBnClickedCheckPacheck()//显示密码
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE); // 更新控件对应变量的值
if (m_passwordcheck.GetCheck() == 1)
{
CEdit* pmyEdit = (CEdit*)GetDlgItem(IDC_EDIT2_PASS); // 密码编辑框控件的指针
pmyEdit->SetPasswordChar(0); // 显示格式为明文
ASSERT(!(pmyEdit->GetStyle() & ES_PASSWORD));
}
else
{
CEdit* pmyEdit = (CEdit*)GetDlgItem(IDC_EDIT2_PASS); // 密码编辑框控件的指针
pmyEdit->SetPasswordChar('*'); // 显示格式为星号
}
}
然后是登录演示
就OK了