vs2012利用MFC開發基於對話方塊的小軟體指南(連線Mysql資料庫)

life4711發表於2016-01-27

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

最後頁面是這樣的:


相關文章