青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

VC++ ADO編程入門簡介

?一、ADO簡介
?
? ADO(ActiveX Data Object)是Microsoft數據庫應用程序開發的新接口,是建立在OLE DB之上的高層數據庫訪問技術,請不必為此擔心,即使你對OLE DB,COM不了解也能輕松對付ADO,因為它非常簡單易用,甚至比你以往所接觸的ODBC API、DAO、RDO都要容易使用,并不失靈活性。本文將詳細地介紹在VC下如何使用ADO來進行數據庫應用程序開發,并給出示例代碼。
?
? 本文示例代碼
?
? 二、基本流程
?
? 萬事開頭難,任何一種新技術對于初學者來說最重要的還是“入門”,掌握其要點。讓我們來看看ADO數據庫開發的基本流程吧!
?
? (1)初始化COM庫,引入ADO庫定義文件
? (2)用Connection對象連接數據庫
? (3)利用建立好的連接,通過Connection、Command對象執行SQL命令,或利用Recordset對象取得結果記錄集進行查詢、處理。
? (4)使用完畢后關閉連接釋放對象。
?
? 準備工作:
? 為了大家都能測試本文提供的例子,我們采用Access數據庫,您也可以直接在我們提供的示例代碼中找到這個test.mdb。
? 下面我們將詳細介紹上述步驟并給出相關代碼。
?
? 【1】COM庫的初始化
? 我們可以使用AfxOleInit()來初始化COM庫,這項工作通常在CWinApp::InitInstance()的重載函數中完成,請看如下代碼:
?
? BOOL CADOTest1App::InitInstance() { AfxOleInit(); ......
?
? 【2】用#import指令引入ADO類型庫
? 我們在stdafx.h中加入如下語句:(stdafx.h這個文件哪里可以找到?你可以在FileView中的Header Files里找到)
?
? #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
? 這一語句有何作用呢?其最終作用同我們熟悉的#include類似,編譯的時候系統會為我們生成msado15.tlh,ado15.tli兩個C++頭文件來定義ADO庫。
?
? 幾點說明:
? (1) 您的環境中msado15.dll不一定在這個目錄下,請按實際情況修改
? (2) 在編譯的時候肯能會出現如下警告,對此微軟在MSDN中作了說明,并建議我們不要理會這個警告。
? msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
?
?
? 【3】創建Connection對象并連接數據庫
? 首先我們需要添加一個指向Connection對象的指針:
? _ConnectionPtr m_pConnection;
? 下面的代碼演示了如何創建Connection對象實例及如何連接數據庫并進行異常捕捉。
?BOOL?CADOTest1Dlg::OnInitDialog()?{
??CDialog::OnInitDialog();
??HRESULT?hr;
??
try?{
??hr?
=?m_pConnection.CreateInstance("ADODB.Connection");///創建Connection對象
??
??
if(SUCCEEDED(hr))?
??
{
??hr?
=?m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=test.mdb","","",adModeUnknown);
??
///連接數據庫?///上面一句中連接字串中的Provider是針對ACCESS2000環境的,對于ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51;
??}

??}
?
??
catch(_com_error?e)///捕捉異常?
??{
??CString?errormessage;?errormessage.Format(
"連接數據庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());?AfxMessageBox(errormessage);///顯示錯誤信息?}?
在這段代碼中我們是通過Connection對象的Open方法來進行連接數據庫的,下面是該方法的原型
? HRESULT Connection15::
? Open
? (_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )
? ConnectionString為連接字串,UserID是用戶名, Password是登陸密碼,Options是連接選項,用于指定Connection對象對數據的更新許可權,
?
? Options可以是如下幾個常量:
? adModeUnknown:缺省。當前的許可權未設置
? adModeRead:只讀
? adModeWrite:只寫
? adModeReadWrite:可以讀寫
? adModeShareDenyRead:阻止其它Connection對象以讀權限打開連接
? adModeShareDenyWrite:阻止其它Connection對象以寫權限打開連接
? adModeShareExclusive:阻止其它Connection對象打開連接
? adModeShareDenyNone:允許其它程序或對象以任何權限建立連接
?
? 我們給出一些常用的連接方式供大家參考:
? (1)通過JET數據庫引擎對ACCESS2000數據庫的連接
?
? m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb","","",adModeUnknown);
?
? (2)通過DSN數據源對任何支持ODBC的數據庫進行連接:
m_pConnection->Open("Data?Source=adotest;UID=sa;PWD=;","","",adModeUnknown);?
(3)不通過DSN對SQL SERVER數據庫進行連接:
?m_pConnection->
??Open(
??
"driver={SQLServer};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown
??);
? 其中Server是SQL服務器的名稱,DATABASE是庫的名稱
?
? Connection對象除Open方法外還有許多方法,我們先介紹Connection對象中兩個有用的屬性ConnectionTimeOut與State
? ConnectionTimeOut用來設置連接的超時時間,需要在Open之前調用,例如:
??m_pConnection->ConnectionTimeout?=?5;///設置超時時間為5秒
??
??m_pConnection
->Open("Data?Source=adotest;","","",adModeUnknown);
??
??State屬性指明當前Connection對象的狀態,0表示關閉,1表示已經打開,我們可以通過讀取這個屬性來作相應的處理,例如:
??
??
if(m_pConnection->State)?m_pConnection->Close();?///如果已經打開了連接則關閉它?
? 【4】執行SQL命令并取得結果記錄集
? 為了取得結果記錄集,我們定義一個指向Recordset對象的指針:_RecordsetPtr m_pRecordset;
? 并為其創建Recordset對象的實例: m_pRecordset.CreateInstance("ADODB.Recordset");
? SQL命令的執行可以采用多種形式,下面我們一進行闡述。
?
? (1)利用Connection對象的Execute方法執行SQL命令
?
? Execute方法的原型如下所示:
?
? _RecordsetPtr Connection15::
? Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options )
? 其中CommandText是命令字串,通常是SQL命令。參數RecordsAffected是操作完成后所影響的行數, 參數Options表示CommandText中內容的類型,Options可以取如下值之一:
?
? adCmdText:表明CommandText是文本命令
? adCmdTable:表明CommandText是一個表名
? adCmdProc:表明CommandText是一個存儲過程
? adCmdUnknown:未知
?
? Execute執行完后返回一個指向記錄集的指針,下面我們給出具體代碼并作說明。
??_variant_t?RecordsAffected;
??
///執行SQL命令:CREATE?TABLE創建表格users,users包含四個字段:整形ID,字符串username,整形old,日期型birthday
??
??m_pConnection
->
??
??Execute(
"CREATE?TABLE?users(ID?INTEGER,username?TEXT,old?INTEGER,birthday?DATETIME)",&RecordsAffected,adCmdText);
??
///往表格里面添加記錄
??
??m_pConnection
->
??
??Execute(
"INSERT?INTO?users(ID,username,old,birthday)?VALUES?(1,?'Washington',25,'1970/1/1')",&RecordsAffected,adCmdText);?
??
///將所有記錄old字段的值加一
??
??m_pConnection
->
??
??Execute(
"UPDATE?users?SET?old?=?old+1",&RecordsAffected,adCmdText);
??
///執行SQL統計命令得到包含記錄條數的記錄集
??
??m_pRecordset?
=?m_pConnection->
??
??Execute(
"SELECT?COUNT(*)?FROM?users",&RecordsAffected,adCmdText);
??_variant_t?vIndex?
=?(long)0;?
??_variant_t?vCount?
=?_pRecordset->
??
??GetCollect(vIndex);
??
??
///取得第一個字段的值放入vCount變量
???m_pRecordset->Close();
??
///關閉記錄集
??
??CString?message;
??message.Format(
"共有%d條記錄",vCount.lVal);
??AfxMessageBox(message);
??
///顯示當前記錄條數?
??
??(
2)利用Command對象來執行SQL命令
??
??_CommandPtr?m_pCommand;?
??m_pCommand.CreateInstance(
"ADODB.Command");?
??_variant_t?vNULL;
??vNULL.vt?
=?VT_ERROR;
??vNULL.scode?
=?DISP_E_PARAMNOTFOUND;
??
///定義為無參數
??
??m_pCommand
->ActiveConnection?=?m_pConnection;
??
///非常關鍵的一句,將建立的連接賦值給它
??
??m_pCommand
->CommandText?=?"SELECT?*?FROM?users";
??
///命令字串
??
??m_pRecordset?
=?m_pCommand->Execute(&vNULL,&vNULL,adCmdText);
??
///執行命令,取得記錄集?
? 在這段代碼中我們只是用Command對象來執行了SELECT查詢語句,Command對象在進行存儲過程的調用中能真正體現它的作用。下次我們將詳細介紹。
?
?
? 如果是使用智能指針_RecordsetPtr定義的記錄集,那么可以使用
? RecordCount 方法得到記錄集記錄數。

posted on 2006-04-14 21:05 楊粼波 閱讀(3611) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久久**毛片大全| 欧美成人小视频| 国产欧美日韩视频一区二区| 国产精品盗摄久久久| 欧美视频免费看| 国产毛片久久| 激情小说亚洲一区| 亚洲精品一区在线| 亚洲综合不卡| 久久久久综合一区二区三区| 久久综合狠狠综合久久综合88| 欧美成人免费网| 日韩亚洲欧美一区| 欧美中文字幕视频在线观看| 欧美成年人视频网站| 亚洲精品久久久久久下一站 | 亚洲综合大片69999| 欧美一区日韩一区| 欧美成人高清视频| 正在播放亚洲| 久热精品在线视频| 国产精品乱子久久久久| 在线日韩电影| 午夜精品美女久久久久av福利| 老司机午夜精品视频在线观看| 亚洲精品三级| 久久久综合激的五月天| 国产精品国产福利国产秒拍| 在线免费观看日本欧美| 欧美一级久久久| 亚洲人成人77777线观看| 亚洲综合成人婷婷小说| 欧美精品福利| 在线观看欧美日韩国产| 欧美一区二区三区免费观看| 亚洲人成人一区二区三区| 久久精品国产免费观看| 国产精品日韩久久久| 亚洲伦伦在线| 欧美a级在线| 欧美在线观看网址综合| 国产精品日韩欧美一区二区| 亚洲网站在线播放| 亚洲日本va在线观看| 美女久久网站| 一区久久精品| 久久免费高清视频| 欧美亚洲一区三区| 国产精品一二| 亚洲欧美电影院| 日韩一区二区福利| 欧美日韩视频在线观看一区二区三区| 亚洲第一区中文99精品| 鲁大师影院一区二区三区| 午夜在线视频一区二区区别| 国产精品久久综合| 亚洲免费婷婷| 亚洲一二区在线| 国产精品久久激情| 午夜精品久久久久久久久久久久| av成人激情| 欧美午夜精品伦理| 欧美一级黄色录像| 欧美一级片久久久久久久| 国产啪精品视频| 久久国产精品亚洲va麻豆| 香蕉久久一区二区不卡无毒影院 | 欧美在线观看视频在线| 性久久久久久久久| 亚洲无线观看| aaa亚洲精品一二三区| 欧美日韩亚洲一区三区| 亚洲视频在线观看三级| 一区二区三区av| 国产精自产拍久久久久久蜜| 久久国产加勒比精品无码| 亚洲欧美制服另类日韩| 国内精品美女在线观看| 欧美国产一区二区| 欧美日本一区| 久久成人精品无人区| 久久九九免费视频| 日韩午夜电影av| 亚洲视频久久| 精品99一区二区| 亚洲精品国精品久久99热一| 国产精品久久久久一区二区| 久久人人爽人人| 欧美大片va欧美在线播放| 亚洲午夜一区| 欧美在线免费观看亚洲| 亚洲精品久久久久久久久久久久久| 99热在线精品观看| 狠狠综合久久av一区二区老牛| 亚洲国产成人精品久久久国产成人一区| 欧美日韩久久精品| 久久久一区二区三区| 欧美激情在线狂野欧美精品| 欧美一区二区三区的| 男人插女人欧美| 欧美亚洲综合另类| 欧美激情成人在线视频| 欧美一级欧美一级在线播放| 欧美成人激情视频| 久久精品日韩欧美| 欧美日韩精品三区| 米奇777超碰欧美日韩亚洲| 欧美日韩在线电影| 欧美福利视频在线观看| 国产精品视频不卡| 亚洲精品色婷婷福利天堂| 黄色日韩网站| 亚洲中无吗在线| 在线亚洲+欧美+日本专区| 久久亚洲影音av资源网| 欧美一区二区精美| 欧美日韩免费一区| 欧美高清一区| 国产日本欧美一区二区三区| 99国产欧美久久久精品| 亚洲国产一区在线| 久久久国产成人精品| 欧美一区二区三区在线看| 欧美日韩精品综合| 亚洲国产精品久久久久| 亚洲国产高清视频| 久久久久成人精品| 久久噜噜噜精品国产亚洲综合 | 国模私拍一区二区三区| 亚洲欧美激情视频| 亚洲欧美日本国产有色| 欧美午夜一区二区福利视频| 亚洲精品之草原avav久久| 国产亚洲精品久久久久久| 国产婷婷色一区二区三区| 一区二区三区黄色| 在线视频欧美日韩| 欧美日韩高清区| 日韩视频在线观看免费| 亚洲网址在线| 国产精品久久久久久久久久久久| 亚洲美女毛片| 亚洲一品av免费观看| 欧美体内谢she精2性欧美| 一区二区三区视频在线播放| 亚洲一区二区欧美日韩| 国产精品99一区二区| 宅男噜噜噜66一区二区| 香蕉免费一区二区三区在线观看| 国产精品欧美一区二区三区奶水| 亚洲制服少妇| 久久亚洲精品一区| 亚洲激情在线视频| 欧美日韩成人在线视频| 中文在线不卡| 久久久精品国产免大香伊| 在线观看精品| 欧美激情精品| 亚洲无线一线二线三线区别av| 久久精品国产久精国产思思| 亚洲第一狼人社区| 欧美激情综合网| 亚洲视频精选在线| 久久深夜福利| 日韩视频在线观看| 国产精品国产三级国产aⅴ无密码| 午夜精品短视频| 亚洲第一偷拍| 午夜亚洲激情| 91久久精品国产91性色| 欧美日韩亚洲一区二区三区四区 | 一区二区三区国产精华| 久久久免费精品视频| 亚洲精品美女91| 国产欧美精品一区| 欧美激情1区2区3区| 欧美一区二区在线看| 亚洲国产日韩欧美一区二区三区| 亚洲欧美美女| 日韩亚洲欧美综合| 狠狠干狠狠久久| 国产精品jvid在线观看蜜臀| 久久漫画官网| 亚洲一区在线看| 亚洲国产另类精品专区| 久久久久久色| 午夜国产不卡在线观看视频| 日韩视频中午一区| 在线看成人片| 国产日韩欧美制服另类| 国产精品h在线观看| 欧美激情视频免费观看| 久久精品中文| 午夜精品免费| 亚洲性xxxx| 一区二区三区偷拍| 亚洲精品久久久一区二区三区| 免费日韩av片| 久久久在线视频| 久久成人国产精品|