最近要做一個大作業,需要用到資料庫,sql server裝了兩次都失敗,遂棄暗投明,用mysql,雖然我從來沒有接觸過,資料庫麼,一通百通的,5分鐘就熟悉了。問題的關鍵是要用MFC串連mysql資料庫,將資料庫裡面的資料讀出來,查了一個晚上的資料,愣是沒有搞定。串連資料庫太煩了吧……
如果你也跟我一樣,沒有專研精神,只是想快速的完成任務,這篇文章就是寫給你的,不用找了,這已經是相對很簡單的方法了。
MFC串連資料庫常用的方法有三種:
1.ODBC
2.MFC資料庫類
3.DAO資料庫
本文採用第二種方法(據說第三種方法最簡單,管他呢,MFC資料庫類已經很白癡了)
首先配置DSN,方法如下:
http://docs.noahweb.net/config_dsn.htm
注意:你電腦上很可能沒有MySql ODBC 3.5 Driver這一項,也就是說我們沒有裝驅動,去下載一個就好了,很小&&免費:http://ishare.down.sina.com.cn/18810049.msi?ssig=3NTFUcCBfX&Expires=1319731200&KID=sina,ishare&ip=1319622288,59.77.16.
第二步:
建立一個MFC應用程式,然後隨便弄個滑鼠響應事件或者菜單響應事件什麼的。添加如下代碼:
try{CDatabase db;if( db.Open("noahsample")){db.ExecuteSql("insert into UserMaster values( 'TestID' , 'Test User Name' , 0)");db.Close();}}catch (CDBException* e){AfxMessageBox( e->m_strError);e->Delete();}
具體的SQL語句根據你的欄位不同而不同啦,然後去資料庫看一下資料插入了沒有,如果插入了,恭喜你,MFC串連資料庫最頭疼的部分搞定了,接下來的事情就是查一下MFC類庫,進行響應操作而已,很easy。
第三步:查詢資料
其實有了上面那幾行代碼進行增刪改都沒有問題了,下面講解一下查詢資料。
MFC提供了一個CRecordset對象,(用以代表一個表,我是這麼理解的,事實也是這樣的),我們可以通過類嚮導建立一個代表一張表的CRecordset類。方法如下:
這裡關鍵是基類要選擇CRecordSet,然後進入如下頁面
“noahsample”是之前配置DSN的時候定義的名字。
選擇相應的表,這樣就完成了一個CRecordset類的定義,該類就代表的那張表。如下查詢語句相應大家一看就懂。什麼?看不懂?難道你是安師大電腦專業畢業的?
void CDatabaseDlg::OnBtnSave() {try{CDatabase db;if( db.Open("noahsample")){UpdateData(TRUE);//CString sql;//sql.Format("insert into test values ( %d , '%s')", m_nUserID , m_strUserName);//db.ExecuteSQL(sql);CTestDBSet *pCTestDBSet = new CTestDBSet();pCTestDBSet->Open(CRecordset::snapshot , "select * from test");CString result = _T("學號\t姓名\n");while( ! pCTestDBSet->IsEOF()){CString str;str.Format("%d \t%s\n" , pCTestDBSet->m_num , pCTestDBSet->m_name);result += str;pCTestDBSet->MoveNext();}MessageBox( result );//db.ExecuteSQL("insert into test values( 3, 'laimingxing')");db.Close();}}catch (CDBException* e){AfxMessageBox( e->m_strError);e->Delete();}}