




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. ODBCOpen Database Connect ODBC是一種訪問數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)是一種訪問數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)2. 這個(gè)標(biāo)準(zhǔn)是通過一組這個(gè)標(biāo)準(zhǔn)是通過一組ODBC API函數(shù)來(lái)函數(shù)來(lái)實(shí)現(xiàn)的實(shí)現(xiàn)的3. 應(yīng)用程序可以通過調(diào)用應(yīng)用程序可以通過調(diào)用ODBC API函數(shù)函數(shù)操作支持操作支持ODBC的各種數(shù)據(jù)庫(kù)的各種數(shù)據(jù)庫(kù)1. 大型的數(shù)據(jù)庫(kù)如大型的數(shù)據(jù)庫(kù)如: Oracle Informix Sybase2. 其它的如其它的如SQL Server 6.5 Foxpro 等等等等3. 不同廠家的數(shù)據(jù)庫(kù)操作函數(shù)是不同的,不同廠家的數(shù)據(jù)庫(kù)操作函數(shù)是不同的,給數(shù)據(jù)庫(kù)的操作帶來(lái)不方便給數(shù)據(jù)庫(kù)的操作帶來(lái)不方便4. 但幾乎
2、所有的數(shù)據(jù)庫(kù)都支持但幾乎所有的數(shù)據(jù)庫(kù)都支持ODBC標(biāo)準(zhǔn)標(biāo)準(zhǔn) (見下圖見下圖)1. 有多個(gè)不同廠家數(shù)據(jù)庫(kù)有多個(gè)不同廠家數(shù)據(jù)庫(kù) DB1, DB2, DB32. 分別用不同的分別用不同的ODBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序driver1, driver2, driver33. 這些這些ODBC驅(qū)動(dòng)程序有兩端接口驅(qū)動(dòng)程序有兩端接口4. 一端可以直接操作各自的數(shù)據(jù)庫(kù)一端可以直接操作各自的數(shù)據(jù)庫(kù)5. 另一端執(zhí)行另一端執(zhí)行ODBC的標(biāo)準(zhǔn),與的標(biāo)準(zhǔn),與ODBC API函數(shù)有連接接口函數(shù)有連接接口Windows應(yīng)用程序應(yīng)用程序DB2DB3DB1驅(qū)動(dòng)程序驅(qū)動(dòng)程序1驅(qū)動(dòng)程序驅(qū)動(dòng)程序2驅(qū)動(dòng)程序驅(qū)動(dòng)程序3ODBC APIODBC
3、驅(qū)動(dòng)程序管理器驅(qū)動(dòng)程序管理器ODBC的工作原理圖的工作原理圖1. ODBC API函數(shù)有兩端接口函數(shù)有兩端接口2. 一端對(duì)用戶是透明的,用戶可以直接使一端對(duì)用戶是透明的,用戶可以直接使用這些用這些API函數(shù)函數(shù)3.另一端通過不同數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)廠家的另一端通過不同數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)廠家的ODBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序driver操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)1.應(yīng)用程序可以直接使用應(yīng)用程序可以直接使用ODBC API函數(shù)函數(shù)操作各種數(shù)據(jù)庫(kù)。操作各種數(shù)據(jù)庫(kù)。2.直接使用直接使用ODBC API函數(shù)操作各種數(shù)據(jù)函數(shù)操作各種數(shù)據(jù)庫(kù)的工作比較復(fù)雜庫(kù)的工作比較復(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ù)庫(kù)應(yīng)用程序的設(shè)計(jì)便的完成數(shù)據(jù)庫(kù)應(yīng)用程序的設(shè)計(jì)1. 主要有兩個(gè)主要有兩個(gè): CRecordSet類類 CDataBase類類2. 這兩個(gè)類聲明包含在頭文件這兩個(gè)類聲明包含在頭文件afxdb.h中中3. 使用這兩個(gè)類的文件要使用這兩個(gè)類的文件要 #include 1. CRecordSet 類中類中封裝了對(duì)封裝了對(duì)Table(表表)操作操作的各個(gè)的各個(gè)ODBC API函數(shù)函數(shù)2. 即即CRecordSet 類中類中的成員函數(shù)是對(duì)表操的成員函
5、數(shù)是對(duì)表操作的作的3. 可以將一個(gè)可以將一個(gè)Table(表表)映射為映射為CRecordset類的數(shù)據(jù)成員類的數(shù)據(jù)成員4. 通過通過CRecordset類的成員函數(shù)可以操作類的成員函數(shù)可以操作該類的數(shù)據(jù)成員該類的數(shù)據(jù)成員(即即Table(表表)1. CDataBase 類中類中封裝了對(duì)一個(gè)數(shù)據(jù)庫(kù)操封裝了對(duì)一個(gè)數(shù)據(jù)庫(kù)操作的各個(gè)作的各個(gè)ODBC API函數(shù)函數(shù)2. 即即CDataBase類中類中的成員函數(shù)是對(duì)數(shù)據(jù)的成員函數(shù)是對(duì)數(shù)據(jù)庫(kù)操作的庫(kù)操作的3. 可以將一個(gè)數(shù)據(jù)庫(kù)映射為可以將一個(gè)數(shù)據(jù)庫(kù)映射為CDataBase類類的數(shù)據(jù)成員的數(shù)據(jù)成員4. 通過通過CDataBase類的成員函數(shù)可以操作類的成員函
6、數(shù)可以操作該數(shù)據(jù)庫(kù)該數(shù)據(jù)庫(kù)5. CDataBase類還支持執(zhí)行類還支持執(zhí)行SQL語(yǔ)句語(yǔ)句1. 建數(shù)據(jù)庫(kù)和表建數(shù)據(jù)庫(kù)和表 數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名 : odbcdata 表表1名為名為: test字段兩個(gè):字段兩個(gè):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ù)庫(kù)廠家的重要的是必須有相應(yīng)的數(shù)據(jù)庫(kù)廠家的ODBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序driver1.)啟動(dòng)啟動(dòng)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ù)庫(kù)的選擇相應(yīng)的數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序“Sybase anywhere 5.0”6.)在在ODBC Configration的對(duì)話框中填寫的對(duì)話框中填寫:Data Source Name: Test1User ID : DBAPassword : SQLDatabas
8、e Name: ODBC1.) 用用MFC AppWizard生成生成MFC應(yīng)用程序應(yīng)用程序2.)在第二步時(shí)重要:在第二步時(shí)重要: 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”對(duì)話框中:對(duì)話框中:ODBC: Test7.) 在在“select database tables”對(duì)話框中:對(duì)話框中:選擇選擇DBA.test8.)注意:在第六步,視類的基類是:注意:在第六步,視類的基類是: CRecordSet 類類1.) 用用Workspace的的ClassView工具工具發(fā)現(xiàn):有發(fā)現(xiàn):有 C*App類類 CMainFrame類類 C*Doc類類 C*View類類各類的作用已介紹各類的作用已介紹2. )增加了一個(gè)類增加了一個(gè)類C*Set 這個(gè)類由這個(gè)類由CRecordSet派生:派生: 由兩各相關(guān)的文件描述由兩各相關(guān)的文件描
10、述1.) 記錄集合類記錄集合類C*Set的數(shù)據(jù)成員可以看作的數(shù)據(jù)成員可以看作數(shù)據(jù)庫(kù)中表數(shù)據(jù)庫(kù)中表Test的的Map2.) 在這個(gè)類中的數(shù)據(jù)成員在這個(gè)類中的數(shù)據(jù)成員 CStringm_aa; CStringm_bb; 同中表同中表Test的字段相對(duì)應(yīng)的字段相對(duì)應(yīng)3.) C*Set類由類由CRecordSet派生:派生: CRecordSet類包含了對(duì)數(shù)據(jù)庫(kù)表的所有類包含了對(duì)數(shù)據(jù)庫(kù)表的所有操作的操作的 ODBC API函數(shù)函數(shù)1.) 打開表打開表2.) 編輯表編輯表a.) insert a record b.) edit a record c.) delete a record d.) 移動(dòng)移動(dòng)3
11、.)關(guān)閉表關(guān)閉表CRecordSet類包含這些對(duì)數(shù)據(jù)庫(kù)表的操作類包含這些對(duì)數(shù)據(jù)庫(kù)表的操作函數(shù)函數(shù)4.) C*Set類管理對(duì)表的操作類管理對(duì)表的操作在文檔類中定義了一個(gè)在文檔類中定義了一個(gè)C*Set類的對(duì)象類的對(duì)象public:CODBCTestSet m_oDBCTestSet;1.) 在視類中定義了一個(gè)在視類中定義了一個(gè)C*Set類的指針類的指針 public:CODBCTestSet* m_pSet;2.) void CODBCTestView:OnInitialUpdate() m_pSet = &GetDocument()-m_oDBCTestSet; 指針指針m_pSet被指
12、向了文檔對(duì)象中的被指向了文檔對(duì)象中的C*Set類的對(duì)象類的對(duì)象m_oDBCTestSet1.) 在視類中定義了一個(gè)在視類中定義了一個(gè)C*Set類的指針類的指針 public:CODBCTestSet* m_pSet;2.) 當(dāng)調(diào)用當(dāng)調(diào)用CRecordSet類的類的Open()函數(shù)時(shí),連接函數(shù)時(shí),連接數(shù)據(jù)源數(shù)據(jù)源3.) m_pSet-Open( ) ;執(zhí)行這條命令時(shí);將調(diào)用執(zhí)行這條命令時(shí);將調(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ù)時(shí),連接數(shù)據(jù)源,也創(chuàng)建記錄集合數(shù)據(jù)源,也創(chuàng)建記錄集合2.) m_pSet-Open( ) ;執(zhí)行這條命令時(shí);將調(diào)用執(zhí)行這條命令時(shí);將調(diào)用C*Set類的成員函數(shù)類的成員函數(shù)CString CODBCTestSet:GetDefaultSQL()return _T(DBA.test);3.) 這個(gè)函數(shù)相當(dāng)于這個(gè)函數(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類對(duì)象完成管理記錄集合的功能。類對(duì)象完成管理記錄集合的功能。 C*Set類的對(duì)象可以看作一個(gè)記錄指針,能夠類的對(duì)象可以看作一個(gè)記錄指針,能夠指向記錄集合的一條記錄。指向記錄集合的一條記錄。3.) 當(dāng)指向記錄集合的一條記錄時(shí),可以將這條當(dāng)指向記錄集合的一條記錄時(shí),可以將這條記錄的各個(gè)字段與記錄的各個(gè)字段與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.) 它與對(duì)話框資源連接,可以對(duì)對(duì)話框資它與對(duì)話框資源連接,可以對(duì)對(duì)話框資源進(jìn)行可視化設(shè)計(jì)源進(jìn)行可視化設(shè)計(jì)3.) 對(duì)話框資源進(jìn)行可視化設(shè)計(jì)對(duì)話框資源進(jìn)行可視化設(shè)計(jì)主要指主要指CRecordView類和類和C*Set類的連接,前面類的連接,前面已介紹已介紹1.)同前例同前例 通過通過MSDN查查CRecordSet類的成員函數(shù)類的成員函數(shù)能夠顯示數(shù)據(jù)能夠顯示數(shù)據(jù)Cdialog類的成員函數(shù):類的成員函數(shù):UpdateData(TRUE);UpdateData(FALSE);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)營(yíng)銷顧問用工合同7篇
- 立體車庫(kù)保養(yǎng)合同模板
- 2024-2025安全管理員安全培訓(xùn)考試試題(考題)
- 2025年安全標(biāo)準(zhǔn)化安全培訓(xùn)考試試題及參考答案【培優(yōu)A卷】
- 2025企業(yè)合同化管理規(guī)定
- 委托加工 協(xié)議 米粉
- 2025工程技術(shù)服務(wù)承包合同范本
- 2025年年團(tuán)隊(duì)建設(shè)項(xiàng)目建議書
- 2025物業(yè)服務(wù)合同范本
- 2025家政服務(wù)保姆合同
- 【MOOC】旅游學(xué)概論-中國(guó)地質(zhì)大學(xué)(武漢) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】地學(xué)景觀探秘·審美·文化-重慶大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】地下鐵道-中南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 病變糖尿病視網(wǎng)膜
- 正規(guī)完整版授課合同標(biāo)準(zhǔn)版可打印
- 工程款結(jié)算合同書
- 中央空調(diào)系統(tǒng)維保服務(wù)報(bào)價(jià)清單
- 數(shù)字化轉(zhuǎn)型對(duì)企業(yè)財(cái)務(wù)績(jī)效影響研究
- 公路養(yǎng)護(hù)施工組織設(shè)計(jì) 公路設(shè)施、交安設(shè)施、公路綠化日常維護(hù)管理施工方案
- 軟瓷產(chǎn)品原材料供應(yīng)與需求分析
- 黃金銷售合同書
評(píng)論
0/150
提交評(píng)論