VC++教案odbc_第1頁
VC++教案odbc_第2頁
VC++教案odbc_第3頁
VC++教案odbc_第4頁
VC++教案odbc_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. ODBCOpen Database Connect ODBC是一種訪問數據庫的標準是一種訪問數據庫的標準2. 這個標準是通過一組這個標準是通過一組ODBC API函數來函數來實現的實現的3. 應用程序可以通過調用應用程序可以通過調用ODBC API函數函數操作支持操作支持ODBC的各種數據庫的各種數據庫1. 大型的數據庫如大型的數據庫如: Oracle Informix Sybase2. 其它的如其它的如SQL Server 6.5 Foxpro 等等等等3. 不同廠家的數據庫操作函數是不同的,不同廠家的數據庫操作函數是不同的,給數據庫的操作帶來不方便給數據庫的操作帶來不方便4. 但幾乎

2、所有的數據庫都支持但幾乎所有的數據庫都支持ODBC標準標準 (見下圖見下圖)1. 有多個不同廠家數據庫有多個不同廠家數據庫 DB1, DB2, DB32. 分別用不同的分別用不同的ODBC驅動程序驅動程序driver1, driver2, driver33. 這些這些ODBC驅動程序有兩端接口驅動程序有兩端接口4. 一端可以直接操作各自的數據庫一端可以直接操作各自的數據庫5. 另一端執行另一端執行ODBC的標準,與的標準,與ODBC API函數有連接接口函數有連接接口Windows應用程序應用程序DB2DB3DB1驅動程序驅動程序1驅動程序驅動程序2驅動程序驅動程序3ODBC APIODBC

3、驅動程序管理器驅動程序管理器ODBC的工作原理圖的工作原理圖1. ODBC API函數有兩端接口函數有兩端接口2. 一端對用戶是透明的,用戶可以直接使一端對用戶是透明的,用戶可以直接使用這些用這些API函數函數3.另一端通過不同數據庫數據庫廠家的另一端通過不同數據庫數據庫廠家的ODBC驅動程序驅動程序driver操作數據庫操作數據庫1.應用程序可以直接使用應用程序可以直接使用ODBC API函數函數操作各種數據庫。操作各種數據庫。2.直接使用直接使用ODBC API函數操作各種數據函數操作各種數據庫的工作比較復雜庫的工作比較復雜3.在在MFC中有封裝了中有封裝了ODBC API函數函數的的MF

4、C中的類中的類4. 應用程序也可以使用封裝了應用程序也可以使用封裝了ODBC API函數的函數的MFC中的類中的類,應用這些類可以方應用這些類可以方便的完成數據庫應用程序的設計便的完成數據庫應用程序的設計1. 主要有兩個主要有兩個: CRecordSet類類 CDataBase類類2. 這兩個類聲明包含在頭文件這兩個類聲明包含在頭文件afxdb.h中中3. 使用這兩個類的文件要使用這兩個類的文件要 #include 1. CRecordSet 類中類中封裝了對封裝了對Table(表表)操作操作的各個的各個ODBC API函數函數2. 即即CRecordSet 類中類中的成員函數是對表操的成員函

5、數是對表操作的作的3. 可以將一個可以將一個Table(表表)映射為映射為CRecordset類的數據成員類的數據成員4. 通過通過CRecordset類的成員函數可以操作類的成員函數可以操作該類的數據成員該類的數據成員(即即Table(表表)1. CDataBase 類中類中封裝了對一個數據庫操封裝了對一個數據庫操作的各個作的各個ODBC API函數函數2. 即即CDataBase類中類中的成員函數是對數據的成員函數是對數據庫操作的庫操作的3. 可以將一個數據庫映射為可以將一個數據庫映射為CDataBase類類的數據成員的數據成員4. 通過通過CDataBase類的成員函數可以操作類的成員函

6、數可以操作該數據庫該數據庫5. CDataBase類還支持執行類還支持執行SQL語句語句1. 建數據庫和表建數據庫和表 數據庫名數據庫名 : odbcdata 表表1名為名為: test字段兩個:字段兩個:a1 char 10 (Primary Key) a2 char 10 1.) 在在d:odbc文件夾中文件夾中2.)新建表新建表 TestUser ID : DBAPassword : SQL 1.) 主要用控制面板中的主要用控制面板中的ODBC數據源管理數據源管理器器2.) 也可以用其他應用程序自帶的的也可以用其他應用程序自帶的的ODBC數據源管理器數據源管理器3.) 重要的是必須有相應

7、的數據庫廠家的重要的是必須有相應的數據庫廠家的ODBC驅動程序驅動程序driver1.)啟動啟動ODBC數據源管理器數據源管理器2.) 選擇選擇“User DSN ”標簽標簽3.) “用戶數據源用戶數據源”列表框中的是已創建的列表框中的是已創建的ODBC數據源數據源4.) 選擇選擇“添加添加 ”按鈕按鈕5.)選擇相應的數據庫的選擇相應的數據庫的ODBC驅動程序驅動程序“Sybase anywhere 5.0”6.)在在ODBC Configration的對話框中填寫的對話框中填寫:Data Source Name: Test1User ID : DBAPassword : SQLDatabas

8、e Name: ODBC1.) 用用MFC AppWizard生成生成MFC應用程序應用程序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工具工具發現:有發現:有 C*App類類 CMainFrame類類 C*Doc類類 C*View類類各類的作用已介紹各類的作用已介紹2. )增加了一個類增加了一個類C*Set 這個類由這個類由CRecordSet派生:派生: 由兩各相關的文件描述由兩各相關的文件描

10、述1.) 記錄集合類記錄集合類C*Set的數據成員可以看作的數據成員可以看作數據庫中表數據庫中表Test的的Map2.) 在這個類中的數據成員在這個類中的數據成員 CStringm_aa; CStringm_bb; 同中表同中表Test的字段相對應的字段相對應3.) C*Set類由類由CRecordSet派生:派生: CRecordSet類包含了對數據庫表的所有類包含了對數據庫表的所有操作的操作的 ODBC API函數函數1.) 打開表打開表2.) 編輯表編輯表a.) insert a record b.) edit a record c.) delete a record d.) 移動移動3

11、.)關閉表關閉表CRecordSet類包含這些對數據庫表的操作類包含這些對數據庫表的操作函數函數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.) 當調用當調用CRecordSet類的類的Open()函數時,連接函數時,連接數據源數據源3.) m_pSet-Open( ) ;執行這條命令時;將調用執行這條命令時;將調用C*Set類的成員函數類的成員函數CString CODBCTestSet:GetDefaultConnect()return _T(ODBC;DSN=test);4.)或者加上用戶名和口令或者加上用戶名

13、和口令CString CODBCTestSet:GetDefaultConnect()return _T(ODBC;DSN=test;UID=DBA;PWD=SQL);1.) 當調用當調用CRecordSet類的類的Open()函數時,連接函數時,連接數據源,也創建記錄集合數據源,也創建記錄集合2.) m_pSet-Open( ) ;執行這條命令時;將調用執行這條命令時;將調用C*Set類的成員函數類的成員函數CString CODBCTestSet:GetDefaultSQL()return _T(DBA.test);3.) 這個函數相當于這個函數相當于SQL命令:命令: select *

14、from test;表示選擇表中的所有內容創建記錄集合表示選擇表中的所有內容創建記錄集合1.) 通過文檔類或視類可以操作通過文檔類或視類可以操作C*Set類的數據類的數據成員成員2.) C*Set類對象完成管理記錄集合的功能。類對象完成管理記錄集合的功能。 C*Set類的對象可以看作一個記錄指針,能夠類的對象可以看作一個記錄指針,能夠指向記錄集合的一條記錄。指向記錄集合的一條記錄。3.) 當指向記錄集合的一條記錄時,可以將這條當指向記錄集合的一條記錄時,可以將這條記錄的各個字段與記錄的各個字段與C*Set類的相應的數據成員類的相應的數據成員相互交換數據相互交換數據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類的成員函數類的成員函數1.) m_pSet-Open( );2.) m_pSet-Close( );1 .) 在當前記錄集合中增加一條新記錄,并將記在當前記錄集

16、合中增加一條新記錄,并將記錄指針指向這條新增加的記錄錄指針指向這條新增加的記錄if(m_pSet-CanAppend( ) m_pSet-AddNew( ); else.2.) 修改數據源的內容,以上操作在記錄集合中修改數據源的內容,以上操作在記錄集合中增加一條新記錄,但沒有修改通過增加一條新記錄,但沒有修改通過ODBC連接連接的數據源中的數據表。的數據源中的數據表。3.) 使用使用m_pSet-Update( )可以完成修改數據源可以完成修改數據源的內容的內容 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( )可以完成修改數據源可以完成修改數據源的內容的內容 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.) 它與對話框資源連接,可以對對話框資它與對話框資源連接,可以對對話框資源進行可視化設計源進行可視化設計3.) 對話框資源進行可視化設計對話框資源進行可視化設計主要指主要指CRecordView類和類和C*Set類的連接,前面類的連接,前面已介紹已介紹1.)同前例同前例 通過通過MSDN查查CRecordSet類的成員函數類的成員函數能夠顯示數據能夠顯示數據Cdialog類的成員函數:類的成員函數:UpdateData(TRUE);UpdateData(FALSE);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論