記得看過有人說,現(xiàn)在的軟件基本上都是連著數(shù)據(jù)庫的,如果一個軟件沒有跟數(shù)據(jù)庫相連,基本沒什么作用。雖然這種說法略顯片面,但數(shù)據(jù)庫之于軟件的重要也是毋庸置疑的。 MFC連接數(shù)據(jù)庫應(yīng)該不算是什么新鮮的命題了,方法是有好幾種的,本人試了下,感覺利用MyS
記得看過有人說,現(xiàn)在的軟件基本上都是連著數(shù)據(jù)庫的,如果一個軟件沒有跟數(shù)據(jù)庫相連,基本沒什么作用。雖然這種說法略顯片面,但數(shù)據(jù)庫之于軟件的重要也是毋庸置疑的。
MFC連接數(shù)據(jù)庫應(yīng)該不算是什么新鮮的命題了,方法是有好幾種的,本人試了下,感覺利用MySQL提供的C語言API來進行操作蠻方便的,所以在此記錄下相關(guān)的操作。
要用MySQL提供的C語言API,首先要包含API的頭文件目錄,也就是在MFC工程屬性中的“包含目錄”下添加MySQL安裝目錄的“include”文件夾。因為API是以動態(tài)鏈接庫的形式打包的,所以還要在MFC工程屬性中的“庫目錄”下添加MySQL安裝目錄的“l(fā)ib”文件夾,結(jié)果如下圖所示:
因為是動態(tài)鏈接庫,所以在做完上面的配置后,要將MySQL安裝目錄下的libmysql.dll文件拷貝到MFC工程目錄下,如果以后要發(fā)行的話這個也要打包進去。昨晚這一步,我們只需要在用到MySQL的頭文件中包含MySQL頭文件就可以正常使用此數(shù)據(jù)庫了。代碼如下:
#include "winsock.h"http://因為數(shù)據(jù)庫是通過網(wǎng)絡(luò)連接的,必須包含網(wǎng)絡(luò)相關(guān)頭文件 #include "mysql.h"http://這個沒什么好說的,mysql頭文件自然要包含 #pragma comment(lib,"libmySQL.lib")//附加依賴項,也可以在工程屬性中設(shè)置
做完上面的配置,我們已經(jīng)可以正常的使用MySQL提供的API了,下面分門別類的來講講具體的操作。
連接數(shù)據(jù)庫:
MYSQL m_sqlCon; MYSQL_RES* res;//記錄函數(shù)返回 MYSQL_ROW row;//記錄行數(shù) mysql_init(&m_sqlCon);//初始化數(shù)據(jù)庫對象 if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "123", "test", 3306, NULL, 0))//localhost:服務(wù)器地址,可以直接填入IP;root:賬號;123:密碼;test:數(shù)據(jù)庫名;3306:網(wǎng)絡(luò)端口 { AfxMessageBox(_T("數(shù)據(jù)庫連接失敗!")); return; } else//連接成功則繼續(xù)訪問數(shù)據(jù)庫,之后的相關(guān)操作代碼基本是放在這里面的 { AfxMessageBox(_T("數(shù)據(jù)庫連接成功!")); } mysql_close(&m_sqlCon);//關(guān)閉Mysql連接
得到數(shù)據(jù)庫中表數(shù)據(jù):
mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//設(shè)置數(shù)據(jù)庫字符格式,解決中文亂碼問題 if (mysql_real_query(&m_sqlCon, "select * from 物料屬性", (unsigned long)strlen("select * from 物料屬性")))// 查詢數(shù)據(jù)庫中的"物料屬性"表 {return;} res = mysql_store_result(&m_sqlCon);//得到存儲結(jié)果集 if (NULL == res)//如果為空則返回 { return; } int listrow = 0; while (row = mysql_fetch_row(res))//重復讀取行,把數(shù)據(jù)放入列表中,直到row為NULL { for (int rols = 0; rols < cols; rols++)//cols為數(shù)據(jù)表的列數(shù) { CString myreaddata(row[rols]); if (rols==0) { list->InsertItem(listrow, myreaddata);//添加第一個* } else { list->SetItemText(listrow, rols, myreaddata); } } listrow++; }
mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//設(shè)置數(shù)據(jù)庫字符格式,解決中文亂碼問題 char *mysqlstatements = "DELETE 物料屬性.*FROM 物料屬性";//sql操作語句 mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//清空"物料屬性"表
sprintf_s(mysqlstatements, "INSERT INTO 物料屬性(物料編號,物料名稱,所屬類別,計量單位,樣品單價,批量單價) value('%s', '%s', '%s', '%s', '%s', '%s')", mysqlinsertpoint[0], mysqlinsertpoint[1], mysqlinsertpoint[2], mysqlinsertpoint[3], mysqlinsertpoint[4], mysqlinsertpoint[5]); //sql操作語句 mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//插入數(shù)據(jù)到"物料屬性"表
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com