最近用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); } }