freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)庫編程總結(jié)推薦-在線瀏覽

2024-09-30 09:31本頁面
  

【正文】 )。OLEDB服務器是提供OLEDB接口的軟件組件。程序結(jié)構(gòu)原理圖如下:數(shù)據(jù)提供程序服務提供程序是數(shù)據(jù)提供程序和使用者的結(jié)合。OLE DB可以在不同的數(shù)據(jù)源中進行轉(zhuǎn)換。OLE DB是一套通過COM接口訪問數(shù)據(jù)的ActiveX接口。同時,OLE DB還允許開發(fā)人員繼續(xù)利用基礎數(shù)據(jù)庫技術的優(yōu)點,而不必為了利用這些優(yōu)點而把數(shù)據(jù)移出來。為了簡化程序設計,Visual C++提供了ATL模板用于設計OLE DB數(shù)據(jù)應用程序和數(shù)據(jù)提供程序。MFC提供的數(shù)據(jù)庫類使OLE DB的編程更具有面向?qū)ο蟮奶匦?。使用ATL模板創(chuàng)建數(shù)據(jù)應用程序一般有以下幾步驟: 1)、創(chuàng)建應用框架2)、加入ATL產(chǎn)生的模板類3)、在應用中使用產(chǎn)生的數(shù)據(jù)訪問對象3 不用ATL使用OLE DB數(shù)據(jù)使用程序利用ATL模板產(chǎn)生數(shù)據(jù)使用程序較為簡單,但適用性不廣,不能動態(tài)適應數(shù)據(jù)庫的變化。模板的使用OLE DB數(shù)據(jù)使用者模板是由一些模板組成的,包括如下一些模板,下面對一些常用類作一些介紹。這個類代表了OLE DB數(shù)據(jù)提供程序和數(shù)據(jù)源之間的連接。CSession類CSession所創(chuàng)建的對象代表了一個單獨的數(shù)據(jù)庫訪問的會話。同時,會話對象還可用于創(chuàng)建事務操作。2)、訪問器類 CAcessor類CAccessor類代表與訪問器的類型。它支持對一個行集采用多個訪問器,并且,存放數(shù)據(jù)的緩沖區(qū)是由用戶分配的。當系統(tǒng)運行時,可以動態(tài)地從行集中獲得列的信息,可根據(jù)此信息動態(tài)地創(chuàng)建訪問器。3)、行集類 CRowSet類CRowSet類封裝了行集對象和相應的接口,并且提供了一些方法用于查詢、設置數(shù)據(jù)等。CBulkRowset類CBulkRowset類用于在一次調(diào)用中取回多個行句柄或者對多個行進行操作。4)、命令類 CTable類 CTable類用于對數(shù)據(jù)庫的簡單訪問,用數(shù)據(jù)源的名稱得到行集,從而得到數(shù)據(jù)??梢杂肙pen()函數(shù)來執(zhí)行SQL命令,也可以Prepare()函數(shù)先對命令進行準備,對于支持命令的數(shù)據(jù)源,可以提高程序的靈活性和健壯性。include extern CComModule _Module。include CComModule _Module。獲取數(shù)據(jù)在打開數(shù)據(jù)源,會話,行集對象后就可以獲取數(shù)據(jù)了。按以下步驟。如果使用CManualAccessor,在使用之前與相應列進行綁定。DBCOLUMNINFO* pColumnInfo = NULL。if((amp。pColumnInfo, amp。struct MYBIND* pBind = new MYBIND[ulColumns]。pBind[0], sizeof(MYBIND)*ulColumns)。l用while循環(huán)來取數(shù)據(jù)。1)如果使用的是CAccessor類,可以通過使用它們的數(shù)據(jù)成員進行直接訪問??梢杂肎etType來獲取所用數(shù)據(jù)類型。for(ULONG i=0。} } 3)如果使用的是CManualAccessor,可以指定自己的數(shù)據(jù)成員,綁定它們。如下所示: while(()== S_OK){// Use the data members you specified in the calls to// (”%s“, szFoo)。如果用的是手工存取程序,可以用GetColumnInfo函數(shù)得到行集的列信息。4總結(jié)由于現(xiàn)在有多種數(shù)據(jù)源,想要對這些數(shù)據(jù)進行訪問管理的唯一途徑就是通過一些同類機制來實現(xiàn),如OLE DB。客戶使用由提供者生成的數(shù)據(jù)。當生成一個客戶對象時,可以通過ATL對象向?qū)е赶蛞粋€數(shù)據(jù)源而創(chuàng)建一個簡單的客戶。從那里,可以通過OLE DB客戶模板使用標準的瀏覽函數(shù)。然后,提供者模板包含了OLE DB支持的完全補充內(nèi)容。應用案例:Visual C++中使用OLE DB讀寫SQL Server 在需要對數(shù)據(jù)庫進行操作時,OLE DB總是被認為是一種效率最高但最難的方法。說它難恐怕主要是因為可參考的中文資料太少,為了幫助以后需要接觸OLE DB的同行,我撰寫了這篇文章。首先來看看對SQL Server進行寫操作的代碼,有一定VC基礎的讀者應該可以很順利地看懂。,因為執(zhí)行的SQL語句必須是UNICODE的。然后在link屬性頁中Category中選擇output,在EntryPoint symbol 中添加wWinMainCRTStartup。HRESULT hResult = ConnectDatabase(amp。if(FAILED(hResult)){//失敗,可能是因為數(shù)據(jù)庫沒有啟動、用戶名密碼錯等等return。hResult = CreateSession(pIDBInitialize, amp。if(FAILED(hResult)){//出錯return。EAutoReleasePtr pICommandText。pICommand, amp。if(FAILED(hResult)){//出錯return。if(FAILED(hResult)){//如果這里失敗,那就是SQL語句執(zhí)行失敗。}// 創(chuàng)建表 ExecuteSQL(pICommand, pICommandText, _T(”CREATE TABLE 2005_1(Volume real NOT NULL,ID int NOT NULL IDENTITY)“))。//...其中幾個函數(shù)的代碼如下:HRESULT ConnectDatabase(IDBInitialize** ppIDBInitialize, LPCTSTR pszDataSource, LPCTSTR pszUserID, LPCTSTR pszPassword){ASSERT(ppIDBInitialize!= NULL amp。 pszDataSource!= NULL amp。 pszUserID!= NULL amp。 pszPassword!= NULL)。// 連接數(shù)據(jù)庫超時(秒)TCHAR szInitStr[1024]。Data Source=%s。User Id=%s。Connect Timeout=%u“), pszDataSource, pszUserID, pszPassword, uTimeout))。EAutoReleasePtr pIDataInitialize。pIDataInitialize)。}EAutoReleasePtr pIDBInitialize。pIDBInitialize)。}hResult = pIDBInitializeInitialize()。}* ppIDBInitialize = ()。}HRESULT CreateSession(IDBInitialize* pIDBInitialize, IOpenRowset** ppIOpenRowset){ASSERT(pIDBInitialize!= NULL amp。 ppIOpenRowset!= NULL)。HRESULT hResult = pIDBInitializeQueryInterface(IID_IDBCreateSession,(void**)amp。if(FAILED(hResult)){return hResult。hResult = pSessionCreateSession(NULL, IID_IOpenRowset,(IUnknown**)amp。if(FAILED(hResult)){return hResult。return S_OK。amp。amp。HRESULT hResult。{EAutoReleasePtr pICreateCommand。pICreateCommand)。}hResult = pICreateCommandCreateCommand(NULL, IID_ICommand,(IUnknown**)amp。if(FAILED(hResult)){return hResult。hResult = pICommandQueryInterface(amp。if(FAILED(hResult)){return hResult。* ppICommandText = ()。}HRESULT ExecuteSQL(ICommand* pICommand, ICommandText* pICommandText, LPCTSTR pszCommand, LONG* plRowsAffected){ASSERT(pICommand!= NUL
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1