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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            性欧美大战久久久久久久久| 久久国产精品亚洲77777| 久久久亚洲综合| 久久不射2019中文字幕| 国产自产2019最新不卡| 久久天堂国产精品| 欧美777四色影视在线| 亚洲精品久久久久| 99成人在线| 国产日韩欧美不卡| 牛人盗摄一区二区三区视频| 欧美乱人伦中文字幕在线| 亚洲女人小视频在线观看| 欧美亚洲系列| 亚洲精品永久免费| 亚洲在线免费观看| 悠悠资源网亚洲青| 日韩一级视频免费观看在线| 国产精品中文字幕在线观看| 麻豆成人精品| 欧美视频免费看| 欧美91精品| 国产精品无码专区在线观看| 欧美大色视频| 国产精品资源| 欧美一区二区三区喷汁尤物| 国产精品丝袜xxxxxxx| 欧美在线观看网站| 欧美成人影音| 欧美中文字幕视频在线观看| 欧美黄色精品| 久久综合99re88久久爱| 欧美日韩一区二区在线观看| 美女图片一区二区| 国产精品家庭影院| 最新热久久免费视频| 国产精品外国| 99这里只有久久精品视频| 亚洲国产99| 欧美在线国产| 欧美亚洲一区在线| 欧美日韩国产另类不卡| 欧美~级网站不卡| 国产精品揄拍500视频| 亚洲精品欧美日韩| 亚洲黄色免费电影| 久久久久久久久久码影片| 午夜欧美电影在线观看| 欧美深夜福利| 亚洲美女淫视频| 亚洲精品国产视频| 蜜月aⅴ免费一区二区三区| 久久久久综合一区二区三区| 国产精品免费福利| 一本大道久久精品懂色aⅴ| 日韩一级在线| 欧美日韩高清不卡| 亚洲精品中文字幕女同| 亚洲精品九九| 欧美美女喷水视频| 日韩网站免费观看| 一本色道久久88亚洲综合88| 欧美电影免费观看| 亚洲人成网站精品片在线观看 | 欧美高清视频免费观看| 美玉足脚交一区二区三区图片| 国内精品久久久| 久久久五月婷婷| 欧美国产日本在线| 亚洲精品免费看| 欧美人与性禽动交情品| 亚洲国产精品久久人人爱蜜臀| 亚洲国产综合在线看不卡| 欧美激情综合色| 亚洲免费观看视频| 午夜精品美女自拍福到在线| 国产精品久久毛片a| 午夜久久美女| 欧美大片在线看| 一区二区三区.www| 国产精品实拍| 久久青青草原一区二区| 亚洲黄色av一区| 亚洲欧美成人一区二区三区| 国产视频自拍一区| 免费观看成人| 中文在线一区| 葵司免费一区二区三区四区五区| 亚洲黄色小视频| 国产精品久在线观看| 久久久999精品视频| 欧美日韩在线视频观看| 欧美一区二区三区久久精品茉莉花| 久久精品国产一区二区三| 在线观看福利一区| 欧美了一区在线观看| 亚洲一区国产视频| 欧美激情一区二区在线| 亚洲专区免费| 亚洲国产精品电影| 国产精品久久久久久久久久妞妞 | 欧美激情视频给我| 亚洲一区二区在线视频| 极品av少妇一区二区| 欧美日韩久久久久久| 欧美在线一级va免费观看| 亚洲精品美女在线观看| 久久久精品国产一区二区三区 | 久久人人97超碰国产公开结果| 日韩视频免费观看| 黄色国产精品| 国产欧美短视频| 欧美日韩 国产精品| 久久理论片午夜琪琪电影网| 亚洲专区在线| 99国产成+人+综合+亚洲欧美| 欧美成年人视频网站欧美| 性欧美xxxx大乳国产app| 亚洲日本免费| 亚洲国产精品一区二区三区| 国产一区二区三区在线播放免费观看| 欧美精品一区二区三区视频| 久久综合久色欧美综合狠狠| 亚洲欧美在线免费观看| 一区二区高清在线| 亚洲精品久久久久久久久久久久| 久久综合九色综合欧美就去吻| 欧美一区二区网站| 亚洲视频在线观看一区| 亚洲精品综合精品自拍| 亚洲国产免费看| 精品999日本| 伊人伊人伊人久久| 国产一区二区在线观看免费播放| 国产精品久久久久久久久久尿| 欧美日韩在线视频一区| 欧美久久婷婷综合色| 欧美xxx在线观看| 欧美a级片网站| 欧美a级在线| 欧美电影免费观看高清完整版| 欧美成人精品h版在线观看| 老司机成人在线视频| 女人香蕉久久**毛片精品| 蜜桃av综合| 欧美另类一区| 国产精品久久久久久妇女6080| 国产精品欧美久久| 国产精品裸体一区二区三区| 国产美女诱惑一区二区| 国产一区二区三区的电影| 黄色在线成人| 亚洲激情偷拍| 亚洲视频在线观看网站| 午夜精品亚洲一区二区三区嫩草| 欧美影院一区| 美女网站在线免费欧美精品| 亚洲高清在线精品| 亚洲免费成人av| 亚洲午夜精品久久| 久久国产精品99国产| 男同欧美伦乱| 国产精品久久国产精品99gif| 国产日韩精品入口| 一区二区在线免费观看| 亚洲精品欧美专区| 亚洲精品一线二线三线无人区| 一区二区激情| 99国产麻豆精品| 亚洲永久免费| 欧美一区二区三区四区在线观看地址| 欧美一级精品大片| 欧美成人按摩| 日韩视频免费观看| 欧美一区二区三区视频免费播放 | 亚洲精品美女久久久久| 亚洲美女精品成人在线视频| 亚洲欧美视频一区二区三区| 久久久国产午夜精品| 欧美激情aaaa| 国产一区二区黄| 一本大道久久a久久综合婷婷| 欧美一区二区高清| 亚洲黄色免费网站| 亚洲一区二区三区四区中文 | 国产精品乱码妇女bbbb| 影音先锋中文字幕一区| 亚洲一区二区毛片| 麻豆精品传媒视频| 亚洲一区二区精品在线| 免费日本视频一区| 国产亚洲精品bt天堂精选| 99国产精品久久久久久久| 久久永久免费| 亚洲欧美另类久久久精品2019| 欧美精品久久一区二区| 精品电影一区| 欧美影片第一页| 一二美女精品欧洲| 欧美激情视频在线播放|