操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    數(shù)據(jù)庫編程總結(jié)

    當(dāng)前各種主流數(shù)據(jù)庫有很多,包括, MS SQL , , ,MySQL, DB2, / , , , SAP/DB, , MS 等等。數(shù)據(jù)庫編程是對(duì)數(shù)據(jù)庫的創(chuàng)建、讀寫等一列的操作。數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務(wù)器端編程。數(shù)據(jù)庫客戶端編程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;數(shù)據(jù)庫服務(wù)端編程主要使用OLE DB等方法。數(shù)據(jù)庫編程需要掌握一些訪問數(shù)據(jù)庫技術(shù)方法,還需要注意怎么設(shè)計(jì)高效的數(shù)據(jù)庫、數(shù)據(jù)庫管理與運(yùn)行的優(yōu)化、數(shù)據(jù)庫語句的優(yōu)化。

    一、訪問數(shù)據(jù)庫技術(shù)方法

    數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務(wù)器端編程。數(shù)據(jù)庫客戶端編程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;數(shù)據(jù)庫服務(wù)端編程主要使用OLE DB等方法。

    1、幾種是數(shù)據(jù)庫訪問方法比較

    是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,提供大量對(duì)數(shù)據(jù)源的操作,能夠靈活地操作游標(biāo),支持各種幫定選項(xiàng),在所有ODBC相關(guān)編程中,API編程具有最高的執(zhí)行速度。

    DAO提供了很好的數(shù)據(jù)庫編程的對(duì)象模型.但是,對(duì)數(shù)據(jù)庫的所有調(diào)用以及輸出的數(shù)據(jù)都必須通過/Jet數(shù)據(jù)庫引擎,這對(duì)于使用數(shù)據(jù)庫應(yīng)用程序,是嚴(yán)重的瓶頸。

    OLEDB提供了COM接口主流數(shù)據(jù)庫有哪些,與傳統(tǒng)的數(shù)據(jù)庫接口相比,有更好的健壯性和靈活性,具有很強(qiáng)的錯(cuò)誤處理能力,能夠同非關(guān)系數(shù)據(jù)源進(jìn)行通信。

    ADO最主要的優(yōu)點(diǎn)在于易于使用、速度快、內(nèi)存支出少和磁盤遺跡小。

    ADO.NET 是利用數(shù)據(jù)集的概念將數(shù)據(jù)庫數(shù)據(jù)讀入內(nèi)存中,然后在內(nèi)存中對(duì)數(shù)據(jù)進(jìn)行操作,最后將數(shù)據(jù)集數(shù)據(jù)回寫到源數(shù)據(jù)庫中。

    OTL 是 , Odbc and DB2-CLI 的縮寫,是一個(gè)C++編譯中操控關(guān)系數(shù)據(jù)庫的模板庫, OTL中直接操作主要是通過提供的OCI接口進(jìn)行,進(jìn)行操作DB2數(shù)據(jù)庫則是通過CLI接口來進(jìn)行,至于MS的數(shù)據(jù)庫和其它一些數(shù)據(jù)庫,則OTL只提供了ODBC來操作的方式。當(dāng)然和DB2也可以由OTL間接使用ODBC的方式來進(jìn)行操縱。具有以下優(yōu)點(diǎn):跨平臺(tái);運(yùn)行效率高,與C語言直接調(diào)用API相當(dāng);開發(fā)效率高,起碼比使用起來更簡(jiǎn)單,更簡(jiǎn)潔;部署容易,不需要ADO組件,不需要.net 等。

    2、VC數(shù)據(jù)庫編程幾種方法

    VC數(shù)據(jù)庫編程幾種方法,包括ODBC連接、MFC ODBC連接、DAO連接、OLEDB、OLE DB 連接、ADO、專用方法(OCI()訪問、++ )。

    通用方法

    1. ODBC連接

    ODBC(Open )是MSOA的一部分,是一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)庫接口。它提供對(duì)關(guān)系數(shù)據(jù)庫訪問的統(tǒng)一接口,實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)源的一致訪問。

    ODBC數(shù)據(jù)訪問由以下部分組成:

    句柄():ODBC使用句柄來標(biāo)識(shí)ODBC環(huán)境、連接、語句和描述器.

    緩存區(qū)():

    數(shù)據(jù)類型(Data types)

    一致性級(jí)別( )

    用ODBC設(shè)計(jì)客戶端的一般步驟:

    分配ODBC環(huán)境

    分配連接句柄

    連接數(shù)據(jù)源

    構(gòu)造和執(zhí)行SQL語句

    獲得查詢結(jié)果

    斷開數(shù)據(jù)源的連接

    釋放ODBC環(huán)境

    ODBC API是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,ODBC API提供大量對(duì)數(shù)據(jù)源的操作,ODBC API能夠靈活地操作游標(biāo),支持各種幫定選項(xiàng),在所有ODBC相關(guān)編程中,API編程具有最高的執(zhí)行速度.因此,ODBC API編程屬于底層編程。

    2. MFC ODBC連接

    MFC ODBC是MFC對(duì)ODBC進(jìn)行的封裝,以簡(jiǎn)化對(duì)ODBC API的 調(diào)用,從而實(shí)現(xiàn)面向?qū)ο蟮臄?shù)據(jù)庫編程接口.

    MFC ODBC的封裝主要開發(fā)了類和類

    (1) 類

    類用于應(yīng)用程序建立同數(shù)據(jù)源的連接。類中包含一個(gè)變量,它代表了數(shù)據(jù)源的連接句柄。如果要建立類的實(shí)例,應(yīng)先調(diào)用該類的構(gòu)造函數(shù),再調(diào)用Open函數(shù),通過調(diào)用,初始化環(huán)境變量,并執(zhí)行與數(shù)據(jù)源的連接。在通過Close函數(shù)關(guān)閉數(shù)據(jù)源。

    類提供了對(duì)數(shù)據(jù)庫進(jìn)行操作的函數(shù)及事務(wù)操作。

    (2) 類

    類定義了從數(shù)據(jù)庫接收或者發(fā)送數(shù)據(jù)到數(shù)據(jù)庫的成員變量,以實(shí)現(xiàn)對(duì)數(shù)據(jù)集的數(shù)據(jù)操作。

    類的成員變量代表了定義該記錄集的SQL語句句柄,為記錄集中字段的個(gè)數(shù),為記錄集所使用的參數(shù)個(gè)數(shù)。

    的記錄集通過實(shí)例的指針實(shí)現(xiàn)同數(shù)據(jù)源的連接,即的成員變量.

    MFC ODBC編程更適合于界面型數(shù)據(jù)庫應(yīng)用程序的開發(fā),但由于類和類提供的數(shù)據(jù)庫操作函數(shù)有限,支持的游標(biāo)類型也有限,限制了高效的數(shù)據(jù)庫開發(fā)。在編程層次上屬于高級(jí)編程。

    應(yīng)用實(shí)例:

    1.打開數(shù)據(jù)庫

    ;

    .( _T( "DSN=" ),::);//為數(shù)據(jù)源名稱

    2.關(guān)聯(lián)記錄集

    (&);

    3.查詢記錄

    sSql1="";

    sSql1 = " * FROM " ;

    .Open(::, sSql1, ::);

    int ti=0;

    var;//var可以轉(zhuǎn)換為其他類型的值

    while (!.IsEOF())

    {

    //讀取Excel內(nèi)部數(shù)值

    .("id",var);

    [ti].id=var.;

    .("name", [ti].name);

    ti++;

    .();

    }

    .Close();//關(guān)閉記錄集

    4.執(zhí)行sql語句

    sSql="";

    sSql+=" * from 院系審核";//清空表

    .(sSql);

    sSql也可以為 ,等語句

    5.讀取字段名

    sSql = " * FROM " ; //讀取的文件有表的定義,或?yàn)楸境绦蛏傻谋?

    // 執(zhí)行查詢語句

    .Open(::, sSql, ::);

    int =.();//列數(shù)

    [30];

    //得到記錄集的字段集合中的字段的總個(gè)數(shù)

    for( i=0;i {

    ;

    .(i,);

    [i].name =.;//字段名

    }

    6.打開excel文件

    = " EXCEL (*.XLS)"; // Excel安裝驅(qū)動(dòng)

    sSql,; //為excel的文件路徑

    TRY

    {

    // 創(chuàng)建進(jìn)行存取的字符串

    sSql.("={%s};DSN='';=1;=FALSE;=/"%s/";DBQ=%s",, , );

    // 創(chuàng)建數(shù)據(jù)庫 (既Excel表格文件)

    if( .(sSql,::) )

    {

    //可以把excel作為一個(gè)數(shù)據(jù)庫操作

    }

    }

    catch(e)

    {

    ("Excel驅(qū)動(dòng)沒有安裝: %s",);

    ("讀取失敗,請(qǐng)檢查是否定義數(shù)據(jù)區(qū)");

    }

    3. DAO連接

    DAO(Data )是一組 /Jet數(shù)據(jù)庫引擎的COM自動(dòng)化接口.DAO直接與/Jet數(shù)據(jù)庫通信.通過Jet數(shù)據(jù)庫引擎,DAO也可以同其他數(shù)據(jù)庫進(jìn)行通信。DAO還封裝了數(shù)據(jù)庫的結(jié)構(gòu)單元,通過DAO可以直接修改數(shù)據(jù)庫的結(jié)構(gòu),而不必使用SQL的數(shù)據(jù)定義語言(DDL)。

    DAO的體系結(jié)構(gòu)如下:

    DAO封裝的類:

    (1):對(duì)DAO工作區(qū)(數(shù)據(jù)庫處理事務(wù)管理器)的封裝

    (2):對(duì)DAO數(shù)據(jù)庫對(duì)象的封裝,負(fù)責(zé)數(shù)據(jù)庫連接.

    (3):對(duì)DAO記錄集對(duì)象的封裝,代表所選的一組記錄.

    (4):對(duì)表定義對(duì)象的封裝,代表基本表或附加表定義.

    (5):對(duì)查詢對(duì)象的封裝,包含所有查詢的定義.

    (6):DAO用于接收數(shù)據(jù)庫操作異常的類.

    (7)

    DAO提供了很好的數(shù)據(jù)庫編程的對(duì)象模型.但是,對(duì)數(shù)據(jù)庫的所有調(diào)用以及輸出的數(shù)據(jù)都必須通過/Jet數(shù)據(jù)庫引擎,這對(duì)于使用數(shù)據(jù)庫應(yīng)用程序,是嚴(yán)重的瓶頸。

    DAO相對(duì)于ODBC來說,屬于高層的數(shù)據(jù)庫接口.

    4. OLE DB連接

    OLE DB對(duì)ODBC進(jìn)行了兩方面的擴(kuò)展:一是提供了數(shù)據(jù)庫編程的OLE接口即COM,二是提供了一個(gè)可用于關(guān)系型和非關(guān)系型數(shù)據(jù)源的接口。

    OLE DB提供了COM接口,與傳統(tǒng)的數(shù)據(jù)庫接口相比,有更好的健壯性和靈活性,具有很強(qiáng)的錯(cuò)誤處理能力,能夠同非關(guān)系數(shù)據(jù)源進(jìn)行通信。

    與ODBC API一樣,OLE DB也屬于底層的數(shù)據(jù)庫編程接口,OLE DB結(jié)合了ODBC對(duì)關(guān)系數(shù)據(jù)庫的操作功能,并進(jìn)行擴(kuò)展,可以訪問非關(guān)系數(shù)據(jù)庫。

    OLE DB訪問數(shù)據(jù)庫的原理如下:

    OLE DB程序結(jié)構(gòu):

    OLE DB由客戶()和服務(wù)器()。客戶是使用數(shù)據(jù)的應(yīng)用程序,它通過OLE DB接口對(duì)數(shù)據(jù)提供者的數(shù)據(jù)進(jìn)行訪問和控制。OLE DB服務(wù)器是提供OLE DB接口的軟件組件。根據(jù)提供的內(nèi)容可以分為數(shù)據(jù)提供程序(Data )和服務(wù)提供程序( )。

    程序結(jié)構(gòu)原理圖如下:

    數(shù)據(jù)提供程序

    數(shù)據(jù)提供程序擁有自己的數(shù)據(jù)并把數(shù)據(jù)以表格的形式呈現(xiàn)給使用者使用.

    服務(wù)提供程序

    服務(wù)提供程序是數(shù)據(jù)提供程序和使用者的結(jié)合。它是OLE DB體系結(jié)構(gòu)中的中間件,它是OLE DB數(shù)據(jù)源的使用者和數(shù)據(jù)使用程序的提供者

    數(shù)據(jù)使用程序

    數(shù)據(jù)使用程序?qū)Υ鎯?chǔ)在數(shù)據(jù)提供程序中的數(shù)據(jù)進(jìn)行使用和控制.

    OLE DB開發(fā)程序的一般步驟:

    初始化COM環(huán)境

    連接數(shù)據(jù)源

    打開對(duì)話

    執(zhí)行命令

    處理結(jié)果

    清除對(duì)象

    應(yīng)用實(shí)例:

    使用OLEDB編寫數(shù)據(jù)庫應(yīng)用程序

    1概述

    OLE DB的存在為用戶提供了一種統(tǒng)一的方法來訪問所有不同種類的數(shù)據(jù)源。OLE DB可以在不同的數(shù)據(jù)源中進(jìn)行轉(zhuǎn)換。利用OLE DB,客戶端的開發(fā)人員在進(jìn)行數(shù)據(jù)訪問時(shí)只需把精力集中在很少的一些細(xì)節(jié)上,而不必弄懂大量不同數(shù)據(jù)庫的訪問協(xié)議。

    OLE DB是一套通過COM接口訪問數(shù)據(jù)的接口。這個(gè)OLE DB接口相當(dāng)通用,足以提供一種訪問數(shù)據(jù)的統(tǒng)一手段,而不管存儲(chǔ)數(shù)據(jù)所使用的方法如何。同時(shí),OLE DB還允許開發(fā)人員繼續(xù)利用基礎(chǔ)數(shù)據(jù)庫技術(shù)的優(yōu)點(diǎn),而不必為了利用這些優(yōu)點(diǎn)而把數(shù)據(jù)移出來。

    2使用ATL使用OLE DB數(shù)據(jù)使用程序

    由于直接使用OLE DB的對(duì)象和接口設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序需要書寫大量的代碼。為了簡(jiǎn)化程序設(shè)計(jì), C++提供了ATL模板用于設(shè)計(jì)OLE DB數(shù)據(jù)應(yīng)用程序和數(shù)據(jù)提供程序。

    利用ATL模板可以很容易地將OLE DB與MFC結(jié)合起來,使數(shù)據(jù)庫的參數(shù)查詢等復(fù)雜的編程得到簡(jiǎn)化。MFC提供的數(shù)據(jù)庫類使OLE DB的編程更具有面向?qū)ο蟮奶匦浴iual C++所提供用于OLE DB的ATL模板可分為數(shù)據(jù)提供程序的模板和數(shù)據(jù)使用程序的模板。

    使用ATL模板創(chuàng)建數(shù)據(jù)應(yīng)用程序一般有以下幾步驟:

    1)、 創(chuàng)建應(yīng)用框架

    2)、 加入ATL產(chǎn)生的模板類

    3)、 在應(yīng)用中使用產(chǎn)生的數(shù)據(jù)訪問對(duì)象

    3 不用ATL使用OLE DB數(shù)據(jù)使用程序

    利用ATL模板產(chǎn)生數(shù)據(jù)使用程序較為簡(jiǎn)單,但適用性不廣,不能動(dòng)態(tài)適應(yīng)數(shù)據(jù)庫的變化。下面我們介紹直接使用MFC OLE DB類來生成數(shù)據(jù)使用程序。

    模板的使用

    OLE DB數(shù)據(jù)使用者模板是由一些模板組成的,包括如下一些模板,下面對(duì)一些常用類作一些介紹。

    1)、 會(huì)話類

    類與OLE DB的數(shù)據(jù)源對(duì)象相對(duì)應(yīng)。這個(gè)類代表了OLE DB數(shù)據(jù)提供程序和數(shù)據(jù)源之間的連接。只有當(dāng)數(shù)據(jù)源的連接被建立之后,才能產(chǎn)生會(huì)話對(duì)象,可以調(diào)用Open來打開數(shù)據(jù)源的連接。

    所創(chuàng)建的對(duì)象代表了一個(gè)單獨(dú)的數(shù)據(jù)庫訪問的會(huì)話。一個(gè)用類產(chǎn)生的數(shù)據(jù)源對(duì)象可以創(chuàng)建一個(gè)或者多個(gè)會(huì)話,要在數(shù)據(jù)源對(duì)象上產(chǎn)生一個(gè)會(huì)話對(duì)象,需要調(diào)用函數(shù)Open()來打開。同時(shí),會(huì)話對(duì)象還可用于創(chuàng)建事務(wù)操作。

    類是用來訪問枚舉器查詢后所產(chǎn)生的行集中可用數(shù)據(jù)提供程序的信息的訪問器,可提供當(dāng)前可用的數(shù)據(jù)提供程序和可見的訪問器。

    2)、 訪問器類

    類代表與訪問器的類型。當(dāng)用戶知道數(shù)據(jù)庫的類型和結(jié)構(gòu)時(shí),可以使用此類。它支持對(duì)一個(gè)行集采用多個(gè)訪問器,并且,存放數(shù)據(jù)的緩沖區(qū)是由用戶分配的。

    類用來在程序運(yùn)行時(shí)動(dòng)態(tài)的創(chuàng)建訪問器。當(dāng)系統(tǒng)運(yùn)行時(shí),可以動(dòng)態(tài)地從行集中獲得列的信息,可根據(jù)此信息動(dòng)態(tài)地創(chuàng)建訪問器。

    類中以在程序運(yùn)行時(shí)將列與變量綁定或者是將參數(shù)與變量捆定。

    3)、 行集類

    類封裝了行集對(duì)象和相應(yīng)的接口,并且提供了一些方法用于查詢、設(shè)置數(shù)據(jù)等。可以用Move()等函數(shù)進(jìn)行記錄移動(dòng),用()函數(shù)讀取數(shù)據(jù),用()、()、()來更新數(shù)據(jù)。

    類用于在一次調(diào)用中取回多個(gè)行句柄或者對(duì)多個(gè)行進(jìn)行操作。

    類提供用數(shù)組下標(biāo)進(jìn)行數(shù)據(jù)訪問。

    4)、 命令類

    類用于對(duì)數(shù)據(jù)庫的簡(jiǎn)單訪問,用數(shù)據(jù)源的名稱得到行集,從而得到數(shù)據(jù)。

    類用于支持命令的數(shù)據(jù)源。可以用Open()函數(shù)來執(zhí)行SQL命令,也可以()函數(shù)先對(duì)命令進(jìn)行準(zhǔn)備主流數(shù)據(jù)庫有哪些,對(duì)于支持命令的數(shù)據(jù)源,可以提高程序的靈活性和健壯性。

    在.h頭文件里,加入如下代碼。

    #

    ;

    #

    #

    # // if you are using

    在.cpp文件里,加入如下代碼。

    #

    ;

    決定使用何種類型的存取程序和行集。

    獲取數(shù)據(jù)

    在打開數(shù)據(jù)源,會(huì)話,行集對(duì)象后就可以獲取數(shù)據(jù)了。所獲取的數(shù)據(jù)類型取決于所用的存取程序,可能需要綁定列。按以下步驟。

    1、 用正確的命令打開行集對(duì)象。

    2、 如果使用,在使用之前與相應(yīng)列進(jìn)行綁定。要綁定列,可以用函數(shù),如下所示:

    // Get the

    ULONG = 0;

    * = NULL;

    = NULL;

    if (rs.(&, &, &) != S_OK)

    on(rs., );

    * pBind = new [];

    rs.(, &pBind[0], ()*);

    for (ULONG l=0; l

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有