最近用MFC写了一个基于对话框的小软件,并且实现了和mysql数据库的交互。从一点不懂到最后写出来,费了不少周折,百度谷歌了很多资料,也听了很多其他人的意见。特写本篇博文,希望对同样在设计含界面的小软件并在学习MFC的朋友提供一定的帮助,你不是一个人。
开发环境:vs2012 mysql5.1 win10x64位操作系统
关于vs2012和mysql数据库的链接请看我的这篇博文
http://blog.csdn.net/lvshubao1314/article/details/50249955
打开vs2012,文件-新建-mfc应用程序-基于对话框,然后完成。然后右侧工具栏有各种控件,拖动到对话框,右键属性可以编辑控件的名称,再然后双击一个控件即可到对应改控件绑定代码了,效果是点击该控件即可执行其绑定代码
细节还是见代码吧,SetDlgItemText()将值输入到控件,GetDlgItemText()得到控件的值,属于CSting类型的。CString这是VC++特有的数据类型,用的时候注意和c++各种类型的转换,这个百度一下就有了,我就不赘述了。
以下是软件其中一个界面的button控件(下图“确认查询”控件)所绑定的代码
void C员工个人信息查询Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString name;
CString id;
GetDlgItemText(IDC_EDIT1,name);
GetDlgItemText(IDC_EDIT2,id);
//int aa=_ttoi(a);
//aa=aa*aa;
//b.Format(_T("%d"),aa);
//SetDlgItemText(IDC_EDIT2,b);
char *host = "localhost";
char *user = "root";//mysql的用户名
char *pass = "root";//你的mysql服务器密码
char *db = "employee";
unsigned int port = 3306; //server port
MYSQL *sock;
sock=mysql_init(0);
if(sock &&mysql_real_connect(sock,host,user,pass,db,0,NULL,0))
{
mysql_query(sock,"SET NAMES 'gbk'");
std:string name1,id1,father_id1,father_name1,father_ab1;
name1=(char *)_bstr_t(name);
id1=(char *)_bstr_t(id);
char name3[100],id3[100];
const char *name2,*id2;
name2=name1.c_str();
id2=id1.c_str();
strcpy(name3,name2);
strcpy(id3,id2);
char sql[300];
sprintf( sql,"select father_id,father_name,father_ab from users where id='%s'and name='%s';",id3,name3);
//sprintf(sql,"insert into %s",bbb);
//b=name.c_str();
mysql_query(sock,sql);
MYSQL_RES *res;
MYSQL_ROW row;
res=mysql_store_result( sock) ;//取得查询结果,保存查询到的数据到res
int num=0;
if(row=mysql_fetch_row(res))
{
string num1=row[0],num2=row[1],num3=row[2];
CString father_name;
CString father_id;
CString father_ab;
father_id=num1.c_str();
father_name=num2.c_str();
father_ab=num3.c_str();
SetDlgItemText(IDC_EDIT3,father_name);
SetDlgItemText(IDC_EDIT4,father_id);
SetDlgItemText(IDC_EDIT5,father_ab);
}
else
{
CString retu(_T("输入信息有误!"));
SetDlgItemText(IDC_EDIT3,retu);
}
}
else
{
CString retu(_T("连接数据库错误!"));
SetDlgItemText(IDC_EDIT2,retu);
}
}