• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            VC數(shù)據(jù)庫(kù)編程筆記(一)

            一、 VC 提供的數(shù)據(jù)庫(kù)訪問技術(shù)

            ODBC API MFC ODBC DAO OLE DB ADO

            訪問速度:傳統(tǒng)的 ODBC 速度較慢。 OLE DB ADO 都是基于 COM 技術(shù),使用該技術(shù)可以直接訪問數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,速度大大提高。

             

            可擴(kuò)展性:通過 OLE DB ActiveX 技術(shù),可以利用 VC 提供的各種組件,控件和第三方提供的組建。從而實(shí)現(xiàn)應(yīng)用程序組件化。

             

            訪問不同數(shù)據(jù)源:傳統(tǒng) ODBC 只能訪問關(guān)系數(shù)據(jù)庫(kù)。 VC 中提供 OLD DB 技術(shù)可以解決該問題。

            二、 幾種技術(shù)概述

            1、 ODBC API

            提供一個(gè)通用接口,為 ORACLE SQLSERVER 都提供了驅(qū)動(dòng)程序。用戶可以 SQL 語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行直接的底層功能操作。使用時(shí)應(yīng)包含以下頭文件。 ”SQL.H”,”SQLEXT.H”,”SQLTYPES.H”.

            使用步驟如下:

            第一步:分配 ODBC 環(huán)境,初始化一些內(nèi)部結(jié)構(gòu)。完成該步,需要分配一個(gè) SQLHENV 類型的變量在 ODBC 環(huán)境中做句柄使用。

            第二步:為將要使用的每一個(gè)數(shù)據(jù)源分配一個(gè)連接句柄,有函數(shù) SQLALLocHandle ()完成。

            第三步:使用 SQLConnect ()把連接句柄與數(shù)據(jù)庫(kù)連接,可以先通過 SQLSetConnectAttr ()設(shè)置連接屬性。

            第四步:進(jìn)行 SQL 語(yǔ)句操作。操作完就可以斷開與數(shù)據(jù)庫(kù)的連接。

            第五步:釋放 ODBC 環(huán)境。

             

            特點(diǎn):功能強(qiáng)大,提供異步操作,事務(wù)處理等高級(jí)功能。目前所有關(guān)系數(shù)據(jù)庫(kù)都提供了 ODBC 的驅(qū)動(dòng)程序,使用很廣泛。

            缺點(diǎn):很難訪問對(duì)象數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)。

             

            2、 MFC ODBC

             

            為簡(jiǎn)化使用 ODBC API VC 提供了 MFC ODBC 類,封裝了 ODBC API

            主要 MFC ODBC 類如下:

            CDatabase 類:一個(gè) CDatabase 對(duì)象表示一個(gè)到數(shù)據(jù)源的連接,通過它可以操作數(shù)據(jù)源。一般不需要直接使用 CDatabase 對(duì)象,因?yàn)?/span> CDecordSet 對(duì)象可以實(shí)現(xiàn)大多數(shù)功能,但在進(jìn)行事務(wù)處理時(shí), CDatabase 就起到關(guān)鍵作用。

            CRecordSet 類:一個(gè) CRecordSet 對(duì)象代表一個(gè)從數(shù)據(jù)源選擇的一組記錄的集合 ----- 記錄集。記錄集有兩種形式: snapshot dynaset 。前者表示是靜態(tài)視圖。后者表示記錄集與其它用戶對(duì)數(shù)據(jù)庫(kù)的更新保持同步。

            CRecordView 類:是在空間中顯示數(shù)據(jù)庫(kù)記錄的視圖。這種視圖是直接連到一個(gè) CRecordSet 對(duì)象的格式視圖。他從一個(gè)對(duì)話框模版資源創(chuàng)建。并將 CRecordSet 對(duì)象的字段顯示在對(duì)話框模版的控件里。對(duì)象利用 DDX RFX 機(jī)制。使格式上的控件和記錄集的字段之間數(shù)據(jù)移動(dòng)自動(dòng)化。

            CDBException 類:由 Cexception 類派生,以 3 個(gè)繼承的變量反映對(duì)數(shù)據(jù)庫(kù)操作時(shí)的異常。

             M_nRetCode: ODBC 返回碼。

            M_strError: 字符串,描述造成拋出異常的錯(cuò)誤原因。

            M_strStateNativeOrigin: 字符串,描述以 ODBC 錯(cuò)誤碼表示的異常錯(cuò)誤。

             

            3、 MFC DAO

             

            MFC DAO 是微軟提供的用于訪問 Microsoft Jet 數(shù)據(jù)庫(kù)文件( * Mdb )的工具。當(dāng)只需訪問 Access 數(shù)據(jù)庫(kù)時(shí)用該技術(shù)很方便。

            4、 OLE DB

             

            ODBC 技術(shù)類似, OLE DB 屬于數(shù)據(jù)庫(kù)訪問技術(shù)中的底層接口。

            直接使用 OLEDB 需要大量代碼, VC 中提供了 ATL 模版,

            OLEDB 框架定義了應(yīng)用的 3 個(gè)基本類。

             

            數(shù)據(jù)提供程序 Data Provider 擁有自己的數(shù)據(jù)并以表格形式顯示數(shù)據(jù)的應(yīng)用程序。

            使用者 Consumers :試用 OLEDB 接口對(duì)存儲(chǔ)在數(shù)據(jù)提供程序中對(duì)數(shù)據(jù)進(jìn)行控制的應(yīng)用程序。

            服務(wù)提供程序 ServiceProvider :是數(shù)據(jù)提供程序和使用者的組合。

             

            使用 OLE DB 編程時(shí),用戶使用組件對(duì)象開發(fā)程序,這些組件包括:

            枚舉器:用于列出可用的數(shù)據(jù)源;

            數(shù)據(jù)源:代表單獨(dú)的數(shù)據(jù)和服務(wù)提供程序,用于創(chuàng)建對(duì)話;

            對(duì)話:     用于創(chuàng)建事務(wù)和命令;

            事務(wù):     用于將多個(gè)操作歸并為單一事務(wù)處理;

            命令:     用于向數(shù)據(jù)源發(fā)送文本命令( SQL ),返回行集;

            錯(cuò)誤:     用于獲得錯(cuò)誤信息。

            5、 ADO

             

            ADO 技術(shù)是基于 OLE DB 的訪問接口。繼承了 OLEDB 的優(yōu)點(diǎn),并對(duì) OLEDB 的接口作了封裝,定義了 ADO 對(duì)象,使開發(fā)簡(jiǎn)化。 ADO 屬于數(shù)據(jù)庫(kù)訪問的高層接口。

             

            ADO 在服務(wù)器應(yīng)用方面非常有效,特別是動(dòng)態(tài)服務(wù)器頁(yè)面( ASP )的支持。

             

            ADO 對(duì)象結(jié)構(gòu)類似于 OLEDB ,但并不依靠對(duì)象層次。大多數(shù)情況用戶只需創(chuàng)建并使用需要的對(duì)象。下面的對(duì)象類組成了 ADO 接口。

             

            Connection  用于表示與數(shù)據(jù)庫(kù)的連接,以及處理一些事務(wù)和命令。

            Command    用于處理傳送給數(shù)據(jù)源的命令。

            Recordset    用于處理數(shù)據(jù)的表格集, 包括獲取和修改數(shù)據(jù)。

            Field            用于表示記錄集中的列信息,包括列值和其他信息。

            Parameter    在傳送給數(shù)據(jù)源的命令之間傳遞數(shù)據(jù)。

            Property      用于操作在 ADO 中使用的其它對(duì)象的詳細(xì)屬性。

            Errro           用于獲取可能發(fā)生的詳細(xì)錯(cuò)誤信息

            posted on 2009-05-21 21:18 wrh 閱讀(399) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2014年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            統(tǒng)計(jì)

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            国内精品久久久久影院优 | 99久久精品国产一区二区三区| 一本一本久久A久久综合精品| 99久久免费国产精品特黄| 日韩精品久久无码中文字幕| 国产V综合V亚洲欧美久久| 国产精品丝袜久久久久久不卡| 久久亚洲AV无码西西人体| 大香伊人久久精品一区二区 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久婷婷国产剧情内射白浆| 亚洲AV无码久久精品成人| 久久最新精品国产| 久久精品国产亚洲AV忘忧草18| 久久精品国产免费观看 | 久久91精品国产91久久户| 久久久久成人精品无码| 久久精品一区二区| 少妇精品久久久一区二区三区| 精品无码久久久久久久动漫| 久久成人国产精品| 久久综合给合久久狠狠狠97色69| 久久这里有精品视频| 久久精品这里只有精99品| 成人久久久观看免费毛片| 久久精品国产亚洲AV影院| 色综合久久中文字幕综合网| 国产L精品国产亚洲区久久| 国产情侣久久久久aⅴ免费| 伊人久久大香线蕉av一区| 一本一本久久a久久精品综合麻豆| 亚洲伊人久久大香线蕉苏妲己| 中文字幕无码免费久久| 97久久国产综合精品女不卡| 久久伊人五月丁香狠狠色| 欧美精品一区二区久久| 久久久久久一区国产精品| 99久久99久久精品国产片| 国产综合免费精品久久久| 久久久久18| 欧美一区二区久久精品|