資源描述:
《重要vc++使用ado開發(fā)access數(shù)據(jù)庫》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、VC++使用ADO開發(fā)ACCESS數(shù)據(jù)庫作者:韓耀旭本文通過實(shí)例演示如何在VC++中使用ADO進(jìn)行ACCESS數(shù)據(jù)庫編程,并對涉及到的幾個(gè)概念進(jìn)行詳細(xì)解釋。本文不對ADO和ACCESS的基本概念進(jìn)行詳細(xì)解釋,主要包括以下內(nèi)容:第一部分ADO和ADOX到底是什么,二者的作用和區(qū)別建立數(shù)據(jù)庫第二部分ADOX創(chuàng)建ACCESS數(shù)據(jù)庫第三部分ADO創(chuàng)建ACCESS數(shù)據(jù)庫的表第四部分使用_ConnectionPtr接口開發(fā)ACCESS數(shù)據(jù)庫第五部分使用_RecordsetPtr接口開發(fā)ACCESS數(shù)據(jù)庫第一部分ADO和ADOX到底是什么,二者的作用和區(qū)別ADO是Microsoft最新推出的數(shù)據(jù)庫訪
2、問的高層軟件接口。它和Microsoft以前的數(shù)據(jù)庫訪問接口DAO、RDO相比具有更大的靈活性,使用也更方便,開發(fā)效率大為提高。ADOX是核心ADO對象的擴(kuò)展庫。它提供的附加對象可用于創(chuàng)建、修改和刪除模式對象,如表和過程。要使用ADOX,則應(yīng)建立對ADOX類型庫的引用。ADOX庫文件名為Msadox.dll。通俗地講,ADO是訪問數(shù)據(jù)庫的一種接口,可以使用它方便地進(jìn)行數(shù)據(jù)庫編程。而ADOX是微軟對ADO功能的擴(kuò)展,比如:可以ADOX創(chuàng)建數(shù)據(jù)庫(而ADO沒有創(chuàng)建數(shù)據(jù)庫的功能)。第二部分ADOX創(chuàng)建ACCESS數(shù)據(jù)庫用ADOX創(chuàng)建access數(shù)據(jù)庫方法很簡單,只需要創(chuàng)建一個(gè)Catalog對
3、象,然后調(diào)用它的Create方法就可以了。例程ADOXCreateDatabase演示如何使用ADOX創(chuàng)建一個(gè)ACCESS數(shù)據(jù)庫。打開VC++6.0,新建一個(gè)基于對話框的工程ADOXCreateDatabase。在對話框IDD_ADOXCREATEDATABASE_DIALOG中添加一個(gè)編輯框IDC_DBNAME和一個(gè)按鈕IDC_BTN_CREATE,編輯框用以輸入數(shù)據(jù)庫名稱。使用ClassWizard給編輯框創(chuàng)建一個(gè)CString變量m_dbName。雙擊IDC_BTN_CREATE按鈕,并編輯OnBtnCreate()函數(shù)如下:voidCADOXCreateDatabaseDlg:
4、:OnBtnCreate(){//使輸入到編輯框IDC_DBNAME的內(nèi)容更新到m_dbName變量中UpdateData(TRUE);CStringstr;str="d:\"+m_dbName+".mdb";//檢查該數(shù)據(jù)庫是否已經(jīng)存在,如果該數(shù)據(jù)庫已經(jīng)存在,彈出消息框,返回//使用API函數(shù)PathFileExists()檢查路徑文件是否存在//請注意:為了使用API函數(shù)PathFileExists(),需要加入//#include"Shlwapi.h"http://#pragmacomment(lib,"shlwapi.lib")if(PathFileExists(str)){CStri
5、ngstrTemp;strTemp.Format("%s已存在!",str);AfxMessageBox(strTemp);return;}//定義ADOX對象指針并初始化為NULL//用ADOX創(chuàng)建access數(shù)據(jù)庫方法很簡單,//只需要新建一個(gè)Catalog對象,然后調(diào)用它的Create方法就可以了。//Catalog是ADOX的一個(gè)對象,它包含描述數(shù)據(jù)源模式目錄的集合。//在這里,您只需知道創(chuàng)建數(shù)據(jù)庫時(shí)使用這個(gè)對象就可以了。//注意用try...catch組合捕捉錯(cuò)誤_CatalogPtrm_pCatalog=NULL;CStringDBName="Provider=Micros
6、oft.JET.OLEDB.4.0;Datasource=";DBName=DBName+str;try{m_pCatalog.CreateInstance(__uuidof(Catalog));m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));}catch(_com_error&e){AfxMessageBox(e.ErrorMessage());return;}}使用ADOX,需要引入ADOX的動態(tài)鏈接庫msadox.dll,即在stdafx.h中加入如下語句:#import"C:ProgramFilesCommonFilessyste
7、madomsadox.dll"no_namespacerename("EOF","adoEOF")另外,ADOX屬于COM對象,所以要在CADOXCreateDatabaseApp::InitInstance()函數(shù)中加入:if(!AfxOleInit()){AfxMessageBox("OLE初始化出錯(cuò)!");returnFALSE;}初始化COM。好了,編譯并運(yùn)行該例程,對于編譯過程中彈出的4146號警告不要理會。在編輯框中輸入一個(gè)數(shù)據(jù)