国产午夜成人免费看片无遮挡_日本免费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>

        亚洲国产精品久久久久秋霞影院 | 日本韩国欧美国产| 久久亚洲一区二区三区四区| 免费观看在线综合色| 日韩欧美一区二区久久婷婷| 精品一区二区在线看| 国产亚洲一区二区三区| 国产精品综合二区| 自拍偷自拍亚洲精品播放| 日本道精品一区二区三区| 亚洲国产精品天堂| 欧美一区二视频| 国产美女av一区二区三区| 亚洲欧美在线另类| 欧美疯狂做受xxxx富婆| 精品写真视频在线观看| 国产精品白丝在线| 91精品国产入口| 国产激情一区二区三区| 亚洲码国产岛国毛片在线| 在线播放/欧美激情| 国产在线精品免费av| 亚洲精品国产第一综合99久久| 欧美剧在线免费观看网站| 国产一区高清在线| 亚洲一卡二卡三卡四卡无卡久久| 日韩一区二区精品在线观看| 成人在线一区二区三区| 亚洲国产精品久久久久婷婷884 | 日韩黄色免费电影| 久久精品综合网| 精品国产伦一区二区三区观看体验 | 一区二区三区四区乱视频| 91精品午夜视频| 国产成人免费视频精品含羞草妖精| 久久综合av免费| 欧美伊人久久久久久午夜久久久久| 日韩精品每日更新| 17c精品麻豆一区二区免费| 91精品国产色综合久久不卡蜜臀| 五月激情丁香一区二区三区| 国产三级精品三级在线专区| 欧美日本一区二区三区四区| 成人教育av在线| 国产主播一区二区| 亚洲成人午夜影院| 最近日韩中文字幕| 久久久久久久久岛国免费| 欧美一区二区三区四区高清| 99国产精品久| 成人免费视频一区二区| 免费观看久久久4p| 日产国产高清一区二区三区| 一卡二卡三卡日韩欧美| 一区二区中文字幕在线| 国产日本欧洲亚洲| 国产日韩精品一区二区浪潮av | 视频一区二区三区中文字幕| 一区二区三区在线影院| 亚洲精品国产一区二区精华液| 欧美韩日一区二区三区四区| 国产三级三级三级精品8ⅰ区| 欧美成人精品3d动漫h| 欧美一区二区三区四区五区| 3d成人h动漫网站入口| 欧美色视频在线| 欧美日韩日日摸| 欧美日韩www| 欧美男人的天堂一二区| 欧美色网一区二区| 欧美日韩中文精品| 欧美乱妇20p| 日韩精品自拍偷拍| 日韩区在线观看| 色婷婷激情综合| 成人高清视频免费观看| 成人黄色电影在线| 不卡一区二区在线| 99re热这里只有精品免费视频| 国内精品写真在线观看| 国产精品一二二区| 国产一区二区免费视频| 国产美女精品在线| 国产成人av电影| 盗摄精品av一区二区三区| 一区二区激情视频| 日韩福利视频导航| 免费美女久久99| 韩国中文字幕2020精品| 国产一区二区三区免费| 国产69精品久久777的优势| 国产成a人无v码亚洲福利| 99久久精品一区二区| 91精品国产综合久久久蜜臀图片| 欧美一区二区不卡视频| 日韩一区二区三区视频在线| 久久综合色播五月| 中文字幕av一区二区三区高| 久久不见久久见中文字幕免费| 美腿丝袜在线亚洲一区| 国产一区二区毛片| 国产精品77777竹菊影视小说| 99视频在线观看一区三区| 91色porny蝌蚪| 欧美三片在线视频观看| 91精选在线观看| 久久一区二区三区四区| 国产精品伦一区| av电影在线观看不卡| 日韩免费观看2025年上映的电影 | av一区二区三区四区| 色系网站成人免费| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲色图一区二区| 国产精品视频yy9299一区| 国产精品卡一卡二| 亚洲国产另类av| 国产成人av影院| 在线精品视频小说1| 日韩欧美一级在线播放| 国产精品国产自产拍高清av王其| 日韩高清一区二区| 99精品国产一区二区三区不卡| av成人老司机| 国产精品美女久久久久aⅴ | 久久精品欧美一区二区三区不卡 | 亚洲精品成人悠悠色影视| 午夜电影网一区| 99re这里只有精品视频首页| 欧美精品久久99| 中文久久乱码一区二区| 蜜臀av一区二区| 欧美又粗又大又爽| av影院午夜一区| 久久夜色精品国产欧美乱极品| 亚洲成人资源在线| a级精品国产片在线观看| 精品国产乱码久久久久久蜜臀| 九色porny丨国产精品| 欧美日韩黄视频| 日韩精品中文字幕一区二区三区 | 色综合中文综合网| 欧美日韩精品一区二区| 亚洲视频综合在线| 国产精品亚洲人在线观看| 日韩女优视频免费观看| 天天av天天翘天天综合网色鬼国产| jlzzjlzz亚洲日本少妇| 国产欧美一区视频| 国产精品一区久久久久| 在线一区二区三区| 亚洲手机成人高清视频| 粉嫩av亚洲一区二区图片| 精品久久久三级丝袜| 美女视频黄a大片欧美| 制服丝袜中文字幕一区| 午夜视频一区二区三区| 欧美三级电影在线观看| 国产精品三级电影| 成人午夜在线免费| 亚洲日本欧美天堂| 欧美久久久久免费| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩一级黄| 日韩国产欧美三级| 中文在线免费一区三区高中清不卡 | 韩国精品一区二区| 久久久久久99久久久精品网站| 国产麻豆成人传媒免费观看| 国产婷婷一区二区| 91在线观看免费视频| 亚洲国产精品影院| 日本女优在线视频一区二区| 日韩视频免费观看高清在线视频| 日韩av一区二区三区四区| 欧美视频在线一区| 久久精品国产在热久久| 国产欧美精品国产国产专区| av在线播放一区二区三区| 亚洲成人tv网| 久久人人97超碰com| 老司机精品视频线观看86| 尤物在线观看一区| 日韩一卡二卡三卡国产欧美| 国产电影精品久久禁18| 亚洲女同ⅹxx女同tv| 欧美日韩免费在线视频| 国产黑丝在线一区二区三区| 久久久欧美精品sm网站| 色综合天天性综合| 免费人成在线不卡| 综合久久国产九一剧情麻豆| 在线成人午夜影院| 国产mv日韩mv欧美| 中文久久乱码一区二区| 精品国产百合女同互慰| 色欲综合视频天天天| 韩国精品主播一区二区在线观看| 亚洲日本欧美天堂| 久久久久久电影|