免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在Visual C++中使用ADO
在VisualC++中,要使用ADO對象,必須先在類的頭文件中導(dǎo)入ADO的庫文件,并包含頭文件icrsint.h。

ADO數(shù)據(jù)綁定對話框向?qū)Э勺詣訉?dǎo)入ADO對象庫,并包含icrsint.h。在對象VisualC++中,CADORecordBinding類實現(xiàn)了如何在VisualC++中使用ADO對象。ADO數(shù)據(jù)綁定對話框向?qū)Ы⒘艘粋€CADORecordBinding類的派生類CCustomRs。CCustomRs類定義了與制定數(shù)據(jù)庫表字段對應(yīng)的數(shù)據(jù)成員,并將數(shù)據(jù)成員綁定到字段。
在CCustomRs類頭文件RsCgDlg.h的頭部,導(dǎo)入了ADO庫:

#import "C:/Program Files/CommonFiles/system/ado/msado15.dll" rename_namespace("ADOCG")rename("EOF", "EndOfFile")
using namespace ADOCG;
#include "icrsint.h"

然后,向?qū)Фx了一個CRsCgDlg類,該類繼承了CDialog(對話框類)和CCustomRs。CRsCgDlg類定義了一個記錄集對象指針m_pRs,如下:

_RecordsetPtr m_pRs;

_RecordsetPtr在CADORecordBinding類中被定義為ADO的Recordset對象指針。通過m_pRs即可在對話框中使用ADO的Recordset對象訪問數(shù)據(jù)庫。
1.打開記錄集
首先要創(chuàng)建一個Connection對象實例,然后執(zhí)行Open方法打開記錄集。例如:

m_strConnection =_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://Documents andSettings//Administrator//桌面  //File.mdb;PersistSecurityInfo=False");                                  //定義連接字符串
m_strCmdText = _T("F1");//定義命令文本內(nèi)容
m_pRs.CreateInstance(__uuidof(Recordset)); //創(chuàng)建Connection對象實例
m_pRs->CursorLocation =adUseClient;        //設(shè)置游標(biāo)位置
m_pRs->Open((LPCTSTR)m_strCmdText,     //命令文本內(nèi)容
(LPCTSTR)m_strConnection,                       //連接字符串
adOpenKeyset,                                          //設(shè)置游標(biāo)類型
adLockReadOnly,                                         //設(shè)置鎖定類型
adCmdTableDirect);                                    //設(shè)置命令類型

2.游標(biāo)位置
Connection對象的CursorLocation屬性用于設(shè)置或返回游標(biāo)位置,常數(shù)adUseClient表示使用本地游標(biāo)庫提供的客戶端游標(biāo)。adUseServer表示使用數(shù)據(jù)提供者或驅(qū)動程序提供的游標(biāo),為默認(rèn)值。

3.游標(biāo)類型
游標(biāo)類型決定了記錄集是否可讀寫以及記錄滾動方式。游標(biāo)類型常量有:
adOpenForwardOnly 僅向前游標(biāo),默認(rèn)值。只能在記錄中向前滾動
adOpenKeyset   鍵集游標(biāo)。記錄集不能訪問其他用戶刪除的記錄,無法查看其他用戶添加 

                        的記錄,可看見其他用戶更改的數(shù)據(jù)

adOpenDynamic  動態(tài)游標(biāo)??煽匆娖渌脩羲鞯奶砑印⒏暮蛣h除。允許在記錄集中進

                        行所有類型的移動。
adOpenStatic    靜態(tài)游標(biāo)。記錄集用于查找數(shù)據(jù)或生成報告。對其他用戶所作的添加、更改

                       或刪除不可見。

4.鎖定類型
鎖定類型決定記錄集如何對記錄加鎖。鎖定類型常量有:
adLockReadOnly   默認(rèn)值,只讀。無法更改數(shù)據(jù)。
adLockPessimistic 保守式逐條記錄鎖定。為確保成功編輯記錄,采用編輯時立即鎖定數(shù)據(jù)源

                          的記錄。
adLockOptimistic   開放式逐條記錄鎖定。只有在調(diào)用Update方法時鎖定記錄。
adLockBatchOptimistic 開放式批更新,只在調(diào)用UpdateBatch方法時鎖定記錄。

5.命令類型
命令類型用于決定提供者如何解釋CommandText屬性設(shè)置的命令文本,命令類型常量有:
AdCmdText                將CommandText解釋為命令或存儲過程調(diào)用
AdCmdTable               將CommandText解釋為數(shù)據(jù)庫查詢的名稱
AdCmdTableDirect       將CommandText解釋為數(shù)據(jù)庫表的名稱
AdCmdStoredProc       將CommandText解釋為存儲過程名稱
AdCmdUnknown          默認(rèn)值。將CommandText解釋為未知的命令類型
AdCommandFile           將CommandText解釋為持久Recordset文件名
AdExecuteNoRecords    將CommandText解釋為不返回行的命令或存儲過程

6.連接字符串
連接字符串用于指定數(shù)據(jù)提供者、數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)庫、用戶名好口令等連接信息。常用的數(shù)據(jù)提供者有:
MSDASQL         訪問ODBC數(shù)據(jù)源的OLE DB提供者
MSIDXS            訪問Microsoft Index Server的OLE DB提供者
ADSDSOObject   訪問Microsoft ActiveDirectory Service的OLE DB提供者
Microsoft.Jet.OLEDB.3.51或4.0  訪問Microsoft Jet(Access數(shù)據(jù)庫)的OLE DB提供者
SQLOLEDB        訪問Microsoft SQL Server數(shù)據(jù)庫的OLE DB提供者
MSDAORA         訪問Oracle的OLE DB提供者

使用Recordset對象

Recordset對象用于保存執(zhí)行查詢獲得的記錄,并可將修改后的記錄返回服務(wù)器。
1.Recordset對象常用屬性
*AbsolutePosition:返回當(dāng)前記錄在記錄集中的序號
*ActiveConnection:設(shè)置或返回對象使用的活動連接
*Bof:記錄指針指向第一條記錄之前時返回值為True,否則為False
*CursorLocation:設(shè)置或返回指針(也稱光標(biāo)或游標(biāo))的位置,默認(rèn)為adUseServer
*CursorType:設(shè)置或返回指針類型,默認(rèn)為adOpenForward
*Eof(EndOfFile):記錄指針指向最后一條記錄之后時返回值為True,否則為False
*Filter:設(shè)置或返回記錄集的數(shù)據(jù)過濾條件
*LockType:設(shè)置或返回記錄加鎖類型,默認(rèn)為adLockReadOnly
*RecordCount:返回記錄集中的記錄數(shù)目
*State:返回記錄集的當(dāng)前狀態(tài)
2.瀏覽記錄集
在一個記錄集中,只可能有一個記錄成為當(dāng)前記錄,絕大多數(shù)記錄集操作都是針對當(dāng)前記錄。Recordset對象提供了多個屬性和方法來實現(xiàn)記錄瀏覽,即切換當(dāng)前記錄。
Recordset對象與記錄瀏覽相關(guān)的屬性如下:
*PageSize:設(shè)置或返回記錄集中每個記錄頁中包含的記錄條數(shù),默認(rèn)值為10
*PageCount:返回記錄頁個數(shù)
*AbsolutePage:返回當(dāng)前記錄頁序號
*AbsolutePosition:返回當(dāng)前記錄絕對位置的序號
*Bof:返回記錄指針是否指向第一個記錄之前
*Eof(EndOfFile):返回記錄是否指向最后一個記錄之后
*Bookmark:返回唯一標(biāo)識當(dāng)前記錄的書簽,或者將當(dāng)前記錄設(shè)置為書簽標(biāo)識的記錄
Recordset對象與記錄瀏覽相關(guān)的方法如下:
*Move n:使當(dāng)前記錄向前或向后的第n條記錄成為當(dāng)前記錄,n大于0向前(記錄集的末尾),n小于0向后(記錄集的開頭)。
*MoveFirst:使第一條記錄成為當(dāng)前記錄
*MoveLast:使最后一條記錄成為當(dāng)前記錄。
*MoveNext:使下(向記錄集的末尾)一條記錄成為當(dāng)前記錄
*MovePrevious:使上(向記錄集的開頭)一條記錄成為當(dāng)前記錄
3.記錄集排序
可利用記錄集的Sort屬性實現(xiàn)記錄排序,排序僅僅是按排序的順序訪問記錄,實際數(shù)據(jù)并沒有排序。設(shè)置Sort屬性時,需指定排序字段的名稱,多個字段使用逗號分隔??捎肁SC或DESC關(guān)鍵字,前者表示按升序(從小到大)排序,后者表示按降序(從大到?。?。默認(rèn)為ASC。例如:m_pRs->Sort="學(xué)號 ASC"
將Sort屬性設(shè)置為空字符串可取消排序,恢復(fù)原始順序。
4.篩選記錄
可設(shè)置記錄集的Filter屬性來篩選記錄,只有使篩選條件為True的記錄才出現(xiàn)在記錄集中。設(shè)置Filter屬性會影響AbsolutePosition、AbsolutePage、RecordCount和PageCount屬性值。
一般使用包含邏輯表達式的字符串作為Filter屬性值,例如:
m_pRs->Filter="出生日期>#1990-1-1#"
字符串中的字符串用單引號括起來,日前用#括起來。字符串中可以使用>、<、<=、>=、<>、=或LIKE關(guān)系運算符,AND和OR兩個邏輯運算符,且AND和OR沒有優(yōu)先級之分。Like的模式字符串中可用*或%代表任意長度的任意字符構(gòu)成的字符串,_代表一個任意的字符。
將Filter屬性設(shè)為空字符串或adFilterNone常量可取消篩選。
5.查找記錄
記錄集的Find方法用于查找記錄,在條件字符串中可用>、<、=、或Like等關(guān)系運算構(gòu)成關(guān)系表達式。條件字符串中的字符串用單引號括起來,日期使用#括起來。例如:
m_pRs->Find "出生日期=#1990-1-1#"
6.執(zhí)行查詢
首先執(zhí)行Close方法關(guān)閉記錄集,在命令文本中包含SQLSelect查詢,再執(zhí)行Open方法重新打開記錄集,從而獲得指定的查詢結(jié)果。例如:
m_pRs->Close();
m_strCmdText="SELECT * FROM StudentInfo WHERE age>=35";
m_pRs->Open((LPCTSTR)m_strCmdText,(LPCTSTR)m_strConnection,adOpenStatic,adLockOptimistic,adCmdTableDirect);
7.修改記錄
在VisualC++中,記錄集的Update方法用于修改記錄。Update方法使用兩個保存字段名稱好字段值的安全數(shù)組作為參數(shù)。例如:
long index[1];
VARIANTflds,vals;   //聲明兩個安全數(shù)組變量
flds.vt=VT_ARRAY|VT_VARIANT;  //定義安全數(shù)組類型
vals.vt=VT_ARRAY|VT_VARIANT;
SAFEARRAYBOUNDbound;   //聲明安全數(shù)組邊界變量
bound.cElements=5;   //定義安全數(shù)組元素個數(shù)
bound.lLbound=0;   //定義安全數(shù)組最小下標(biāo)
COleVariantfld[5],val[5];  //用于保存字段名稱和字段值
//設(shè)置字段名稱數(shù)組元素值
fld[0]="id";
fld[1]="name";
fld[2]="age";
fld[3]="sex";
fld[4]="email";
//設(shè)置字段值數(shù)組元素值
val[0]=m_strDlgid;
val[1]=m_strDlgname;
val[2]=m_strDlgage;
val[3]=m_strDlgsex;
val[4]=m_strDlgemail;
//創(chuàng)建安全數(shù)組
flds.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
vals.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
for (int i=0;i<5;i++)
{
 index[0]=i;
 ::SafeArrayPutElement(flds.parray,index,&fld[i]);//將字段名稱存入安全數(shù)組
 ::SafeArrayPutElement(vals.parray,index,&val[i]);//將字段值存入安全數(shù)組
}
m_pRs->Update(&flds,&vals);  //使用安全數(shù)組修改當(dāng)前記錄
8.添加記錄
記錄集的AddNew方法用于添加記錄,添加記錄與修改記錄方法基本相同
long index[1];
VARIANTflds,vals;                       //聲明兩個安全數(shù)組變量
flds.vt=VT_ARRAY|VT_VARIANT;  //定義安全數(shù)組類型
vals.vt=VT_ARRAY|VT_VARIANT;
SAFEARRAYBOUNDbound;         //聲明安全數(shù)組邊界變量
bound.cElements=5;                  //定義安全數(shù)組元素個數(shù)
bound.lLbound=0;                     //定義安全數(shù)組最小下標(biāo)
COleVariantfld[5],val[5];            //用于保存字段名稱和字段值
//設(shè)置字段名稱數(shù)組元素值
fld[0]="id";
fld[1]="name";
fld[2]="age";
fld[3]="sex";
fld[4]="email";
//設(shè)置字段值數(shù)組元素值
val[0]=m_strDlgid;
val[1]=m_strDlgname;
val[2]=m_strDlgage;
val[3]=m_strDlgsex;
val[4]=m_strDlgemail;
//創(chuàng)建安全數(shù)組
flds.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
vals.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
for (int i=0;i<5;i++)
{
 index[0]=i;
 ::SafeArrayPutElement(flds.parray,index,&fld[i]);//將字段名稱存入安全數(shù)組
 ::SafeArrayPutElement(vals.parray,index,&val[i]);//將字段值存入安全數(shù)組
}
m_pRs->AddNew(&flds,&vals);                       //使用安全數(shù)組修改當(dāng)前記錄
9.刪除記錄
記錄集的Delete方法用于刪除記錄,例如:
m_pRs->Delete(adAffectCurrent);  //刪除當(dāng)前記錄
m_pRs->MoveNext();                  //使下一條記錄成為當(dāng)前記錄

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
掌握VB中的ADO數(shù)據(jù)對象編程
Recordset對象的一些方法和屬性
ASP教程:第十五篇 常用的ASP ActiveX組件
vb數(shù)據(jù)庫之記錄集-fyjacky-我酷網(wǎng)Woku.com
[轉(zhuǎn)]ASP:ADO數(shù)據(jù)庫訪問
C#進行MapX二次開發(fā)之圖層操作
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服