版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. ODBCOpen Database Connect ODBC是一種訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)是一種訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)2. 這個標(biāo)準(zhǔn)是通過一組這個標(biāo)準(zhǔn)是通過一組ODBC API函數(shù)來函數(shù)來實現(xiàn)的實現(xiàn)的3. 應(yīng)用程序可以通過調(diào)用應(yīng)用程序可以通過調(diào)用ODBC API函數(shù)函數(shù)操作支持操作支持ODBC的各種數(shù)據(jù)庫的各種數(shù)據(jù)庫1. 大型的數(shù)據(jù)庫如大型的數(shù)據(jù)庫如: Oracle Informix Sybase2. 其它的如其它的如SQL Server 6.5 Foxpro 等等等等3. 不同廠家的數(shù)據(jù)庫操作函數(shù)是不同的,不同廠家的數(shù)據(jù)庫操作函數(shù)是不同的,給數(shù)據(jù)庫的操作帶來不方便給數(shù)據(jù)庫的操作帶來不方便4. 但幾乎
2、所有的數(shù)據(jù)庫都支持但幾乎所有的數(shù)據(jù)庫都支持ODBC標(biāo)準(zhǔn)標(biāo)準(zhǔn) (見下圖見下圖)1. 有多個不同廠家數(shù)據(jù)庫有多個不同廠家數(shù)據(jù)庫 DB1, DB2, DB32. 分別用不同的分別用不同的ODBC驅(qū)動程序驅(qū)動程序driver1, driver2, driver33. 這些這些ODBC驅(qū)動程序有兩端接口驅(qū)動程序有兩端接口4. 一端可以直接操作各自的數(shù)據(jù)庫一端可以直接操作各自的數(shù)據(jù)庫5. 另一端執(zhí)行另一端執(zhí)行ODBC的標(biāo)準(zhǔn),與的標(biāo)準(zhǔn),與ODBC API函數(shù)有連接接口函數(shù)有連接接口Windows應(yīng)用程序應(yīng)用程序DB2DB3DB1驅(qū)動程序驅(qū)動程序1驅(qū)動程序驅(qū)動程序2驅(qū)動程序驅(qū)動程序3ODBC APIODBC
3、驅(qū)動程序管理器驅(qū)動程序管理器ODBC的工作原理圖的工作原理圖1. ODBC API函數(shù)有兩端接口函數(shù)有兩端接口2. 一端對用戶是透明的,用戶可以直接使一端對用戶是透明的,用戶可以直接使用這些用這些API函數(shù)函數(shù)3.另一端通過不同數(shù)據(jù)庫數(shù)據(jù)庫廠家的另一端通過不同數(shù)據(jù)庫數(shù)據(jù)庫廠家的ODBC驅(qū)動程序驅(qū)動程序driver操作數(shù)據(jù)庫操作數(shù)據(jù)庫1.應(yīng)用程序可以直接使用應(yīng)用程序可以直接使用ODBC API函數(shù)函數(shù)操作各種數(shù)據(jù)庫。操作各種數(shù)據(jù)庫。2.直接使用直接使用ODBC API函數(shù)操作各種數(shù)據(jù)函數(shù)操作各種數(shù)據(jù)庫的工作比較復(fù)雜庫的工作比較復(fù)雜3.在在MFC中有封裝了中有封裝了ODBC API函數(shù)函數(shù)的的MF
4、C中的類中的類4. 應(yīng)用程序也可以使用封裝了應(yīng)用程序也可以使用封裝了ODBC API函數(shù)的函數(shù)的MFC中的類中的類,應(yīng)用這些類可以方應(yīng)用這些類可以方便的完成數(shù)據(jù)庫應(yīng)用程序的設(shè)計便的完成數(shù)據(jù)庫應(yīng)用程序的設(shè)計1. 主要有兩個主要有兩個: CRecordSet類類 CDataBase類類2. 這兩個類聲明包含在頭文件這兩個類聲明包含在頭文件afxdb.h中中3. 使用這兩個類的文件要使用這兩個類的文件要 #include 1. CRecordSet 類中類中封裝了對封裝了對Table(表表)操作操作的各個的各個ODBC API函數(shù)函數(shù)2. 即即CRecordSet 類中類中的成員函數(shù)是對表操的成員函
5、數(shù)是對表操作的作的3. 可以將一個可以將一個Table(表表)映射為映射為CRecordset類的數(shù)據(jù)成員類的數(shù)據(jù)成員4. 通過通過CRecordset類的成員函數(shù)可以操作類的成員函數(shù)可以操作該類的數(shù)據(jù)成員該類的數(shù)據(jù)成員(即即Table(表表)1. CDataBase 類中類中封裝了對一個數(shù)據(jù)庫操封裝了對一個數(shù)據(jù)庫操作的各個作的各個ODBC API函數(shù)函數(shù)2. 即即CDataBase類中類中的成員函數(shù)是對數(shù)據(jù)的成員函數(shù)是對數(shù)據(jù)庫操作的庫操作的3. 可以將一個數(shù)據(jù)庫映射為可以將一個數(shù)據(jù)庫映射為CDataBase類類的數(shù)據(jù)成員的數(shù)據(jù)成員4. 通過通過CDataBase類的成員函數(shù)可以操作類的成員函
6、數(shù)可以操作該數(shù)據(jù)庫該數(shù)據(jù)庫5. CDataBase類還支持執(zhí)行類還支持執(zhí)行SQL語句語句1. 建數(shù)據(jù)庫和表建數(shù)據(jù)庫和表 數(shù)據(jù)庫名數(shù)據(jù)庫名 : odbcdata 表表1名為名為: test字段兩個:字段兩個:a1 char 10 (Primary Key) a2 char 10 1.) 在在d:odbc文件夾中文件夾中2.)新建表新建表 TestUser ID : DBAPassword : SQL 1.) 主要用控制面板中的主要用控制面板中的ODBC數(shù)據(jù)源管理數(shù)據(jù)源管理器器2.) 也可以用其他應(yīng)用程序自帶的的也可以用其他應(yīng)用程序自帶的的ODBC數(shù)據(jù)源管理器數(shù)據(jù)源管理器3.) 重要的是必須有相應(yīng)
7、的數(shù)據(jù)庫廠家的重要的是必須有相應(yīng)的數(shù)據(jù)庫廠家的ODBC驅(qū)動程序驅(qū)動程序driver1.)啟動啟動ODBC數(shù)據(jù)源管理器數(shù)據(jù)源管理器2.) 選擇選擇“User DSN ”標(biāo)簽標(biāo)簽3.) “用戶數(shù)據(jù)源用戶數(shù)據(jù)源”列表框中的是已創(chuàng)建的列表框中的是已創(chuàng)建的ODBC數(shù)據(jù)源數(shù)據(jù)源4.) 選擇選擇“添加添加 ”按鈕按鈕5.)選擇相應(yīng)的數(shù)據(jù)庫的選擇相應(yīng)的數(shù)據(jù)庫的ODBC驅(qū)動程序驅(qū)動程序“Sybase anywhere 5.0”6.)在在ODBC Configration的對話框中填寫的對話框中填寫:Data Source Name: Test1User ID : DBAPassword : SQLDatabas
8、e Name: ODBC1.) 用用MFC AppWizard生成生成MFC應(yīng)用程序應(yīng)用程序2.)在第二步時重要:在第二步時重要: what Database Support would you like to include?3.)提供了四種選擇:提供了四種選擇:None:Header files only:Database View Without file support:Database View With file support:4.) 選擇第三種:選擇第三種:Database View Without file support:5.) “Data Source.”按鈕有效按鈕有效
9、6.)在在“Database options”對話框中:對話框中:ODBC: Test7.) 在在“select database tables”對話框中:對話框中:選擇選擇DBA.test8.)注意:在第六步,視類的基類是:注意:在第六步,視類的基類是: CRecordSet 類類1.) 用用Workspace的的ClassView工具工具發(fā)現(xiàn):有發(fā)現(xiàn):有 C*App類類 CMainFrame類類 C*Doc類類 C*View類類各類的作用已介紹各類的作用已介紹2. )增加了一個類增加了一個類C*Set 這個類由這個類由CRecordSet派生:派生: 由兩各相關(guān)的文件描述由兩各相關(guān)的文件描
10、述1.) 記錄集合類記錄集合類C*Set的數(shù)據(jù)成員可以看作的數(shù)據(jù)成員可以看作數(shù)據(jù)庫中表數(shù)據(jù)庫中表Test的的Map2.) 在這個類中的數(shù)據(jù)成員在這個類中的數(shù)據(jù)成員 CStringm_aa; CStringm_bb; 同中表同中表Test的字段相對應(yīng)的字段相對應(yīng)3.) C*Set類由類由CRecordSet派生:派生: CRecordSet類包含了對數(shù)據(jù)庫表的所有類包含了對數(shù)據(jù)庫表的所有操作的操作的 ODBC API函數(shù)函數(shù)1.) 打開表打開表2.) 編輯表編輯表a.) insert a record b.) edit a record c.) delete a record d.) 移動移動3
11、.)關(guān)閉表關(guān)閉表CRecordSet類包含這些對數(shù)據(jù)庫表的操作類包含這些對數(shù)據(jù)庫表的操作函數(shù)函數(shù)4.) C*Set類管理對表的操作類管理對表的操作在文檔類中定義了一個在文檔類中定義了一個C*Set類的對象類的對象public:CODBCTestSet m_oDBCTestSet;1.) 在視類中定義了一個在視類中定義了一個C*Set類的指針類的指針 public:CODBCTestSet* m_pSet;2.) void CODBCTestView:OnInitialUpdate() m_pSet = &GetDocument()-m_oDBCTestSet; 指針指針m_pSet被指
12、向了文檔對象中的被指向了文檔對象中的C*Set類的對象類的對象m_oDBCTestSet1.) 在視類中定義了一個在視類中定義了一個C*Set類的指針類的指針 public:CODBCTestSet* m_pSet;2.) 當(dāng)調(diào)用當(dāng)調(diào)用CRecordSet類的類的Open()函數(shù)時,連接函數(shù)時,連接數(shù)據(jù)源數(shù)據(jù)源3.) m_pSet-Open( ) ;執(zhí)行這條命令時;將調(diào)用執(zhí)行這條命令時;將調(diào)用C*Set類的成員函數(shù)類的成員函數(shù)CString CODBCTestSet:GetDefaultConnect()return _T(ODBC;DSN=test);4.)或者加上用戶名和口令或者加上用戶名
13、和口令CString CODBCTestSet:GetDefaultConnect()return _T(ODBC;DSN=test;UID=DBA;PWD=SQL);1.) 當(dāng)調(diào)用當(dāng)調(diào)用CRecordSet類的類的Open()函數(shù)時,連接函數(shù)時,連接數(shù)據(jù)源,也創(chuàng)建記錄集合數(shù)據(jù)源,也創(chuàng)建記錄集合2.) m_pSet-Open( ) ;執(zhí)行這條命令時;將調(diào)用執(zhí)行這條命令時;將調(diào)用C*Set類的成員函數(shù)類的成員函數(shù)CString CODBCTestSet:GetDefaultSQL()return _T(DBA.test);3.) 這個函數(shù)相當(dāng)于這個函數(shù)相當(dāng)于SQL命令:命令: select *
14、from test;表示選擇表中的所有內(nèi)容創(chuàng)建記錄集合表示選擇表中的所有內(nèi)容創(chuàng)建記錄集合1.) 通過文檔類或視類可以操作通過文檔類或視類可以操作C*Set類的數(shù)據(jù)類的數(shù)據(jù)成員成員2.) C*Set類對象完成管理記錄集合的功能。類對象完成管理記錄集合的功能。 C*Set類的對象可以看作一個記錄指針,能夠類的對象可以看作一個記錄指針,能夠指向記錄集合的一條記錄。指向記錄集合的一條記錄。3.) 當(dāng)指向記錄集合的一條記錄時,可以將這條當(dāng)指向記錄集合的一條記錄時,可以將這條記錄的各個字段與記錄的各個字段與C*Set類的相應(yīng)的數(shù)據(jù)成員類的相應(yīng)的數(shù)據(jù)成員相互交換數(shù)據(jù)相互交換數(shù)據(jù)4.) 交換通過交換通過1.)
15、 void CODBCTestSet:DoFieldExchange(CFieldExchange* pFX)/AFX_FIELD_MAP(CODBCTestSet)pFX-SetFieldType(CFieldExchange:outputColumn);RFX_Text(pFX, _T(aa), m_aa);RFX_Text(pFX, _T(bb), m_bb);/AFX_FIELD_MAP通過通過MSDN查查CRecordSet類的成員函數(shù)類的成員函數(shù)1.) m_pSet-Open( );2.) m_pSet-Close( );1 .) 在當(dāng)前記錄集合中增加一條新記錄,并將記在當(dāng)前記錄集
16、合中增加一條新記錄,并將記錄指針指向這條新增加的記錄錄指針指向這條新增加的記錄if(m_pSet-CanAppend( ) m_pSet-AddNew( ); else.2.) 修改數(shù)據(jù)源的內(nèi)容,以上操作在記錄集合中修改數(shù)據(jù)源的內(nèi)容,以上操作在記錄集合中增加一條新記錄,但沒有修改通過增加一條新記錄,但沒有修改通過ODBC連接連接的數(shù)據(jù)源中的數(shù)據(jù)表。的數(shù)據(jù)源中的數(shù)據(jù)表。3.) 使用使用m_pSet-Update( )可以完成修改數(shù)據(jù)源可以完成修改數(shù)據(jù)源的內(nèi)容的內(nèi)容 if(m_pSet-IsOpen( ) if(m_pSet-CanAppend( ) m_pSet-AddNew( ); else.
17、m_pSet-Update( )1 .) 同增加新記錄類似同增加新記錄類似if(m_pSet-CanAppend( ) m_pSet-Edit( ); else.2.) 使用使用m_pSet-Update( )可以完成修改數(shù)據(jù)源可以完成修改數(shù)據(jù)源的內(nèi)容的內(nèi)容 m_pSet-Delete( ); m_pSet-MoveNext(); if(m_pSet-IsEOF( ) m_pSet-MoveLast(); if(m_pSet-IsBOF( ) m_pSet-SetFieldNull(NULL);1.) CRecordView視類是從視類是從CFormView類類派生的,稱為表單視圖派生的,稱為表單視圖2.) 它與對話框資源連接,可以對對話框資它與對話框資源連接,可以對對話框資源進(jìn)行可視化設(shè)計源進(jìn)行可視化設(shè)計3.) 對話框資源進(jìn)行可視化設(shè)計對話框資源進(jìn)行可視化設(shè)計主要指主要指CRecordView類和類和C*Set類的連接,前面類的連接,前面已介紹已介紹1.)同前例同前例 通過通過MSDN查查CRecordSet類的成員函數(shù)類的成員函數(shù)能夠顯示數(shù)據(jù)能夠顯示數(shù)據(jù)Cdialog類的成員函數(shù):類的成員函數(shù):UpdateData(TRUE);UpdateData(FALSE);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度集合大合集人員管理篇
- 單位管理制度匯編大合集人力資源管理
- 《家具導(dǎo)購圣經(jīng)》課件
- 單位管理制度分享匯編職員管理篇十篇
- 單位管理制度分享大全職工管理十篇
- 2024教科室工作計劃
- 單位管理制度呈現(xiàn)合集職工管理篇十篇
- 《投資管理復(fù)習(xí)》課件
- 《市場考察報告》課件
- 《廣告效果的測定》課件
- 美的供應(yīng)鏈變革及智慧采購解決方案
- 高低壓電力系統(tǒng)預(yù)試驗及維保服務(wù)方案
- 教師教育技能培訓(xùn)(3篇模板)
- 代發(fā)工資委托書格式樣本
- YBT 6246-2024《核電工程用熱軋帶肋鋼筋》
- 管桁架焊接 (1)講解
- 大學(xué)助農(nóng)直播創(chuàng)業(yè)計劃書
- 心理健康教育國內(nèi)外研究現(xiàn)狀
- 燃?xì)饨?jīng)營安全重大隱患判定標(biāo)準(zhǔn)課件
- 《經(jīng)濟(jì)學(xué)原理》題庫(含參考答案)
- 廣州社會保險退款申請表
評論
0/150
提交評論