MFC+MySQL(ODBC數據源)實現數據庫登錄詳細教程(用vs實現)

MFC+MySQL的數據庫登錄,整了幾天也搜過不少博客資料,出現過各種各樣的bug,最後終於讓爺給整出來了。
注意:
關於軟件的版本問題,mysql、ODBC、vs一定要注意爲統一的x86或x64,以下的教程是x86(即32位的),vs的版本不用特別注意(可以自由選擇),就是mysql和odbc,在安裝的時候一定要選擇一致的版本。我的是mysql server 5.6.47和connector/ODBC 5.3.9.(可以在網上搜索mysql和odbc的32位下載安裝教程)
下面上全程乾貨!!!
第一步 建立基於對話框的mfc登錄界面
在這裏插入圖片描述給兩個編輯框添加成員變量m_name和m_psd,如圖所示。
在這裏插入圖片描述關於建立mfc的登錄界面可以看一下我的另一篇博客:
https://blog.csdn.net/qq_43389721/article/details/104729968
第二步,配置環境。
在Debug-屬性-vc++的包含、引用和庫目錄中選擇mysql安裝路徑的include和lib文件(mysql是32位需要在c:/programfiles(x86)裏選擇)。在這裏插入圖片描述將mysql安裝路徑下lib文件夾中的libmysql.dll文件和libmysql.lib文件複製到工程項目文件夾以及與工程項目同名的文件夾下。
在這裏插入圖片描述
第三步,編寫登錄的代碼。
雙擊登錄按鈕,添加如下代碼。
此處參考文章https://www.cnblogs.com/cfxin/archive/2017/11/24/7889362.html
添加頭文件
#include “winsock2.h” //定義socket
#include “mysql.h” //連接mysql的接口

#pragma comment(lib,“libmysql.lib”)//附加依賴項

	GetDlgItem(IDC_EDIT1)->GetWindowText(m_name); //獲得輸入的用戶名
	GetDlgItem(IDC_EDIT2)->GetWindowText(m_psw); //獲得輸入的密碼

	const char user[] = "用戶名";
	const char pswd[] = "密碼";
	const char host[] = "localhost";
	const char table[] = "表名";
	unsigned int port = 3306;

	MYSQL_RES *res;
	MYSQL_ROW row;
	MYSQL mysqlCon;

	if (m_name.IsEmpty() || m_psw.IsEmpty())
	{
		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, "SET USER GBK"); //設置字符集
		AfxMessageBox(_T("訪問數據庫成功!"));
	}

	CString select_sql_by_user;
	select_sql_by_user.Format(_T("select name,psw from admins where name = \'%s\'"), m_name);
	int ress = mysql_query(&mysqlCon, (char*)(LPCTSTR)select_sql_by_user);
	if (ress == 0) //檢測查詢成功
	{
		res = mysql_store_result(&mysqlCon);
		if (mysql_num_rows(res) == 0) //查詢結果爲空
		{
			AfxMessageBox(_T("用戶不存在"));
		}
		else
		{

			row = mysql_fetch_row(res);
			if (m_psw == row[1])
			{
				mysql_free_result(res);
				MessageBox(_T("登錄成功!"));
			}
			else
			{
				AfxMessageBox(_T("密碼錯誤!"));
			}
		}


	}
	else
	{
		AfxMessageBox(_T("訪問失敗!"));
	}

	mysql_close(&mysqlCon);

第四步,在mysql中新建數據庫和表格
如圖
在這裏插入圖片描述第五步,設置數據源ODBC,選擇32位的
在這裏插入圖片描述在用戶DSN中點擊添加,選擇MySQL ODBC 5.2aDriver(這個在官網搜索下載)。
填好用戶名和密碼後在database中選擇剛剛建的那個數據庫,點擊OK。
在這裏插入圖片描述第六步,在vs的類嚮導中新建classs下拉,選擇MFC ODBC consumer,選機器數據源,點擊剛剛新建的數據源,點擊確定。
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
點擊ok,(其中有一個彈出警告,不用管,點擊確定)
最後編譯發現還是有錯誤,則將預編譯的頭改爲不使用。
在這裏插入圖片描述在這裏插入圖片描述最後編譯發現有一個安全問題,則直接點擊error,註釋掉這一句即可。
在這裏插入圖片描述現在編譯,沒有錯誤,但是訪問失敗(用戶名admin,密碼123),最後改一個地方就ok採用多字符集。
在這裏插入圖片描述好了,MFC+Mysql實現數據庫登錄的就成功了,在這個過程當中不是一帆風順的,最重要的還是要靠自己一步步解決問題,搜索資料才能成功。
貼上最後成功界面。
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章