国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

VC數(shù)據(jù)庫編程區(qū)分

VC數(shù)據(jù)庫編程區(qū)分

更新時(shí)間:2019-06-21 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

作者: 胡朝暉

    我們知道,在VB下進(jìn)行基于ADO的編程相對(duì)比較簡單,只要我們通過reference加載了適當(dāng)?shù)念愋蛶煲院,我們就可以正常的調(diào)用ADO對(duì)象,但是可能很多開發(fā)人員對(duì)于VC下的基于ADO,OLE DB的數(shù)據(jù)庫開發(fā)就沒有很多經(jīng)驗(yàn)了。所以我們有必要先討論一下VC下基于ADO開發(fā)的幾種模式。

  VC下關(guān)于ADO的操作分析

  一般來說,用VC++有三種方法可以實(shí)現(xiàn)對(duì)ADO的操作:

  1. 通過#import方法

  2. 通過利用MFC OLE的ClassWizard

  3. 通過Windows API中COM相關(guān)的函數(shù)

在所有這三種方法種,#import是最方便的方法,它允許你產(chǎn)生一個(gè)類似VB的類結(jié)構(gòu)。使你的開發(fā)變的很方便。

  #import方法

  在#import中,你需要提供所包含的類型庫的路徑和名稱,它能夠自動(dòng)產(chǎn)生一個(gè)對(duì)GUIDs的定義,同時(shí)對(duì)自動(dòng)生成對(duì)ADO對(duì)象的封裝。同時(shí),能夠列舉它在類型庫中所能找到的類型,對(duì)任何你所引用的類型庫,VC++會(huì)在編譯的時(shí)候自動(dòng)生成兩個(gè)文件:

  一個(gè)頭文件(.tlh),它包含了列舉的類型和對(duì)類型庫中對(duì)象的定義

  一個(gè)實(shí)現(xiàn)文件(.tli)對(duì)類型庫對(duì)象模型中的方法產(chǎn)生封裝。

比如,你在stdafx.h文件中增加對(duì)msado15.dd的import以后,VC++會(huì)產(chǎn)生msado15.tlh和msado15.tli兩個(gè)文件。

  #import也能夠使用一個(gè)新的類,_com_ptr_t,也被稱為智能指針。智能指針能夠自動(dòng)執(zhí)行QuyerInterface,AddRef和Release函數(shù)。對(duì)一個(gè)COM對(duì)象模型使用#import產(chǎn)生代碼和VBA很類似。

  下面的代碼演示了如何使用#import在你的應(yīng)用中實(shí)現(xiàn)對(duì)ADO的操作:

  #import "c:\program files\common files\system\ado\msado15.dll" \

  no_namespace

  rename ( "EOF", "adoEOF" )

對(duì)EOF進(jìn)行該名是必要的,因?yàn)榈湫偷腣C++應(yīng)用都已經(jīng)定義了EOF作為常數(shù)-1。

  下面分析用#import定義和初始化ADO對(duì)象

  通常來說,操作一個(gè)自動(dòng)化對(duì)象需要兩個(gè)步驟:定義和初始化一個(gè)用來操作COM對(duì)象的變量。通過#import你可以在一行代碼完成這個(gè)工作,通過使用智能指針(_com_ptr_t)的構(gòu)造函數(shù)傳遞一個(gè)有效的CLSID或者是PROGID。開發(fā)人員也可以通過_com_ptr_t::CreateInstance()方法來定義對(duì)象的一個(gè)示例。具體代碼如下所示:

  _ConnectionPtr Conn1( __uuidof( Connection ) );

也可以采用下面的代碼實(shí)現(xiàn)同樣的功能

  _ConnectionPtr Conn1 = NULL; file://定義對(duì)象

  HRESULT hr = S_OK;

  hr = Conn1.CreateInstance( __uuidof( Connection ) ); file://創(chuàng)建實(shí)例

推薦采用第二種方法,因?yàn)槿绻玫谝环N方法的話不能返回一個(gè)失敗的HRESULT,所以也就不能判斷ADO連接對(duì)象是成功還是失敗。注意這里的__uuidof( Connection)中的Connection是在.tlh文件中定義的。通過把它傳遞給方法CreateInstance,實(shí)際上就是創(chuàng)建了一個(gè)有效的ADOConnection對(duì)象。

  需要注意到的是#import中有一個(gè)屬性為no_namespace,這是告訴編譯器該類不在一個(gè)單獨(dú)的名字空間中,使用no_namespace意味著你不需要在初始化變量的時(shí)候引用名字空間。當(dāng)然如果在你的應(yīng)用中需要倒入多個(gè)類型庫的話,最后不要使用no_namespace,以免引起名字沖突。

  下面是簡單的基于ADO應(yīng)用的代碼,采用了#import方法:

  #include

  #import rename("EOF", "adoEOF")

  void main()

   {

    HRESULT hr = S_OK;

    file://因?yàn)闆]有在#import中指定no_namespace,所以必須采用ADODB::這樣的形式

    file://來作為變量類型

    ADODB::_RecordsetPtr Rs1 = NULL;

    file://通過ODBC建立ADO連接

    _bstr_t Connect( "DSN=AdoDemo;UID=sa;PWD=;" );

    _bstr_t Source ( "SELECT * FROM Authors" );

    CoInitialize();

    file://初始化Rs1對(duì)象

    hr = Rs1.CreateInstance( __uuidof( ADODB::Recordset ) );

    file://對(duì)hr的返回正確性判斷省略

    Rs1->Open( Source, Connect,

    ADODB::adOpenForwardOnly,

    ADODB::adLockReadOnly, -1 );

    file://這里可以對(duì)記錄集Rs1進(jìn)行操作

    Rs1->Close();

    Rs1 = NULL;

    ::MessageBox( NULL, "Success!", "", MB_OK );

    CoUninitialize();

   }

    用MFC OLE創(chuàng)建ADO應(yīng)用

  MFC OLE類似于#import,能夠?qū)σ粋(gè)類型庫產(chǎn)生一個(gè)封裝(wrapper),但是不象#import,MFC OLE不能夠從類型庫中產(chǎn)生枚舉類型,但是它能夠更干凈的實(shí)現(xiàn)ADO。MFC類CString和COleVariant隱藏了BSTRS和Variants的細(xì)節(jié)。需要注意的是,有MFC OLE產(chǎn)生的類封裝都是繼承了類ColeDispatchDriver,由ADO產(chǎn)生的失敗的HRESULTS被封裝在類ColeDispatchException中。

  首先我們需要說明一下用MFC OLE ClassWizard創(chuàng)建ADO應(yīng)用的幾個(gè)不可缺少的步驟:

  從Tools菜單中,選擇Options,然后選擇Directories tab,在Show Directories中,選擇Library Files,然后在directories增加路徑C:\program files\common files\system\ado,這樣做的目的是設(shè)置包含ADO類型庫的路徑。

  從View菜單中,選擇ClassWizard,點(diǎn)擊Add Class按紐并選擇From A Type Library...,然后在Type Library dialog box對(duì)話框中,從C:\program files\common files\system\ado選擇文件msado15.dll,在Confirm Classes對(duì)話框中,選擇所有列出的類并按OK按紐,退出ClassWizard。實(shí)際上,ClassWizard為你生成了兩個(gè)文件msado15.h和msado15.cpp.

  下面的代碼是實(shí)現(xiàn)ADO應(yīng)用的自己編寫的代碼:

  AfxOleInit(); file://初始化COM對(duì)象

  ...

  _Recordset Rs1; file://定義數(shù)據(jù)集對(duì)象

  COleException e;
  COleVariant Connect( "DSN=AdoDemo;UID=sa;PWD=;" );

  COleVariant Source ( "SELECT * FROM Authors" );

  file://創(chuàng)建數(shù)據(jù)集對(duì)象

  Rs1.CreateDispatch( "ADODB.Recordset.2.0", &e );

  Rs1.Open( (VARIANT) Source, (VARIANT) Connect, 0, 1, -1 );

  file://這里可以對(duì)結(jié)果集Rs1進(jìn)行處理

  Rs1.Close();

  Rs1.ReleaseDispatch();

  AfxMessageBox("Success!");

  #import和MFC OLE都圍繞著一個(gè)給定的自動(dòng)化對(duì)象產(chǎn)生了一個(gè)封裝類,它們分別繼承自_com_ptr_t和ColeDispatchDriver。但是事實(shí)上,你可以通過使用Windows API函數(shù)直接初始化ADO對(duì)象,下面討論直接用Win32 API函數(shù)來操作COM對(duì)象。
    用COM API創(chuàng)建ADO工程

  為了直接使用ADO和COM對(duì)象,需要添加兩個(gè)頭文件adoid.h和adoint.h,這兩個(gè)頭文件定義了CLSIDs,接口定義和你操作ADO類型庫所需要的枚舉類型。同時(shí)你也需要增加頭文件INITGUID.H。

  為了能夠編譯用COM API創(chuàng)建的ADO工程文件,你需要安裝OLE DB SDK或者是MSDASDK工具。下面是簡單的示例代碼:

  #include

  #include

  #include "adoid.h" // ADO的GUID's

  #include "adoint.h" // ADO的類、枚舉等等

  void main()

  {

   HRESULT hr = S_OK;

   ADORecordset* Rs1 = NULL; // ADORecordset 是在adoint.h中定義的

   VARIANT Source;

   VARIANT Connect;

   VariantInit( &Source );

   VariantInit( &Connect );

   Source.vt = VT_BSTR;

   Source.bstrVal = ::SysAllocString( L"SELECT * FROM Authors");

   Connect.vt = VT_BSTR;

   Connect.bstrVal = ::SysAllocString( L"DSN=AdoDemo;UID=sa;PWD=;" );

   hr = CoCreateInstance( CLSID_CADORecordset,

   NULL,

   CLSCTX_INPROC_SERVER,

   IID_IADORecordset,

   (LPVOID *) &Rs1 );

   if( SUCCEEDED( hr ) ) hr = Rs1->Open( Source,

   Connect,

   adOpenForwardOnly,

   adLockReadOnly,

   -1 );

   file://這里你可以對(duì)記錄集Rs1進(jìn)行處理

   if( SUCCEEDED( hr ) ) hr = Rs1->Close();

   if( SUCCEEDED( hr ) ) { Rs1->Release(); Rs1 = NULL; }

   if( SUCCEEDED( hr ) ) ::MessageBox( NULL, "Success!", "", MB_OK );

  } 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲综合视频在线| 日韩电影免费一区| 麻豆精品在线播放| 欧美一区二区三区视频在线观看 | 亚洲国产精品精华液ab| 韩国女主播一区二区三区| 久久蜜桃av一区二区天堂 | 日韩欧美中文一区二区| 国产一区二区三区国产| 国产精品视频第一区| 色婷婷av一区| 久久国产三级精品| 中文字幕av一区二区三区免费看| 色综合欧美在线视频区| 青草国产精品久久久久久| 欧美电影免费观看完整版| 成人av网址在线观看| 午夜精品久久久久久不卡8050| 2024国产精品| 欧美巨大另类极品videosbest| 国产高清在线观看免费不卡| 亚洲亚洲精品在线观看| 久久蜜桃香蕉精品一区二区三区| 91影院在线免费观看| 美女一区二区三区| 亚洲美女一区二区三区| 久久午夜色播影院免费高清| 欧美天堂亚洲电影院在线播放| 国产露脸91国语对白| 日韩电影在线观看电影| 亚洲丝袜精品丝袜在线| 欧美成人激情免费网| 欧美性色综合网| www.欧美.com| 国产麻豆成人精品| 青青草伊人久久| 午夜久久久影院| 一区二区三区成人| 国产精品乱码一区二区三区软件| 日韩免费在线观看| 欧美日韩在线直播| 91啪在线观看| av电影在线观看一区| 国内精品写真在线观看| 日韩专区在线视频| 亚洲国产日韩综合久久精品| 久久久久久久久久美女| 日韩精品专区在线影院观看| 欧美熟乱第一页| 欧美三级电影在线观看| 欧美伊人久久大香线蕉综合69 | 欧美优质美女网站| 91丝袜美女网| 91免费看片在线观看| 99久久国产综合精品女不卡| 成人aa视频在线观看| 国产精品 欧美精品| 精品一区二区三区免费视频| 日本少妇一区二区| 卡一卡二国产精品 | 欧美精品久久天天躁| 欧美美女喷水视频| 欧美一三区三区四区免费在线看| 精品视频在线免费观看| 欧美日韩中文精品| 日韩亚洲欧美成人一区| 久久综合一区二区| 国产欧美一区二区在线| 亚洲女与黑人做爰| 亚洲成人免费观看| 久久av老司机精品网站导航| 国产精品一级片在线观看| 成人午夜私人影院| 在线观看日韩毛片| 日韩免费观看高清完整版| 国产三级精品视频| 一区二区日韩av| 看电视剧不卡顿的网站| 成人动漫视频在线| 精品视频全国免费看| 欧美精品一区二区三区蜜桃视频| 久久人人超碰精品| 亚洲猫色日本管| 日本女人一区二区三区| 国产米奇在线777精品观看| 成人av免费在线播放| 色悠久久久久综合欧美99| 欧美一区二区三区在线看| 国产日韩欧美不卡| 亚洲h在线观看| 成人免费视频视频| 在线成人午夜影院| 国产精品免费aⅴ片在线观看| 亚洲最新视频在线观看| 激情小说亚洲一区| 在线免费不卡电影| 久久久国产午夜精品| 亚洲成人免费看| 成人激情黄色小说| 日韩你懂的在线播放| 一区二区三区高清在线| 国产成人啪免费观看软件 | 久久综合色婷婷| 亚洲精品美腿丝袜| 国产成人免费9x9x人网站视频| 欧美日韩中文字幕精品| 国产精品蜜臀在线观看| 蜜桃精品在线观看| 日本大香伊一区二区三区| 久久久噜噜噜久噜久久综合| 亚洲第一在线综合网站| 91欧美一区二区| 日本一区二区三区四区| 久久爱www久久做| 91精品在线观看入口| 亚洲第一av色| 91福利社在线观看| 国产精品―色哟哟| 国产成人综合在线| 欧美精品一区二区久久久 | 香蕉久久夜色精品国产使用方法| 国产电影精品久久禁18| 欧美成人综合网站| 日韩av二区在线播放| 在线不卡免费av| 三级欧美在线一区| 91精品婷婷国产综合久久竹菊| 亚洲一区免费视频| 欧美午夜精品一区二区三区| 亚洲欧美日韩电影| 99久久久精品| 亚洲欧美色一区| 日本韩国精品在线| 亚洲精品一二三| 欧美午夜电影一区| 五月综合激情日本mⅴ| 欧美日韩综合在线免费观看| 偷拍与自拍一区| 日韩视频免费观看高清完整版 | 在线观看免费亚洲| 亚洲一二三四在线| 69堂精品视频| 国产综合色产在线精品| 26uuu久久综合| 大陆成人av片| 一卡二卡欧美日韩| 欧美日韩高清一区二区| 蜜臀av一区二区| 国产亚洲欧美日韩俺去了| 丁香五精品蜜臀久久久久99网站| 2021国产精品久久精品| 成人免费视频一区| 亚洲一区二区综合| 日韩欧美高清在线| www.欧美亚洲| 天天做天天摸天天爽国产一区 | 国产精品拍天天在线| 一本色道**综合亚洲精品蜜桃冫| 亚洲男女一区二区三区| 欧美日韩国产小视频在线观看| 蜜臀av一区二区在线观看 | 日本欧美久久久久免费播放网| 日韩欧美激情在线| 成人av网站免费观看| 图片区小说区区亚洲影院| 久久久91精品国产一区二区三区| 97超碰欧美中文字幕| 麻豆视频一区二区| 亚洲视频在线观看三级| 欧美一区二区精品| 99视频超级精品| 精品一区精品二区高清| 一区二区三区**美女毛片| 国产午夜亚洲精品羞羞网站| 欧美视频一区二区三区四区 | av电影在线观看不卡| 日韩国产欧美在线视频| 国产精品久久久久久久久久免费看| 在线免费视频一区二区| 国产精品综合一区二区三区| 亚洲福利视频三区| 国产精品久久免费看| 日韩天堂在线观看| 欧美午夜免费电影| 99精品国产热久久91蜜凸| 韩国v欧美v日本v亚洲v| 午夜精品久久久久久久久| 亚洲裸体xxx| 久久综合色综合88| 91精品一区二区三区在线观看| 91丝袜美女网| 成人黄色片在线观看| 久久er99热精品一区二区| 五月婷婷久久综合| 一区二区三区小说| 中文字幕免费一区| 国产欧美精品区一区二区三区 | 免费成人av资源网| 日韩国产欧美三级| 日韩高清国产一区在线|