使用ADO封装类的数据库程序开发实例[第二版](下)
2008-04-19 20:27:50 来源:WEB开发网Supports 方法:
BOOL CAdoRecordSet::Supports(CursorOptionEnum CursorOptions)
Name: 确定指定的 Recordset 对象是否支持特定类型的功能.
Params: CursorOptions 长整型, 包括一个或多个下列 CursorOptionEnum 值.
[常量] | [说明] |
adAddNew | 可使用 AddNew 方法添加新记录. |
adApproxPosition | 可读取并设置 AbsolutePosition 和 AbsolutePage 的属性. |
adBookmark | 可使用 Bookmark 属性获得对特定记录的访问. |
adDelete | 可以使用 Delete 方法删除记录. |
adHoldRecords | 可以检索多个记录或者更改下一个检索位置而不必提交所有挂起的更改. |
adMovePrevious | 可使用 MoveFirst 和 MovePrevious 方法, 以及 Move 或 GetRows 方法将当前记录位置向后移动而不必使用书签. |
adResync | 通过 Resync 方法, 使用在基本的数据库中可见的数据更新游标. |
adUpdate | 可使用 Update 方法修改现有的数据. |
adUpdateBatch | 可以使用批更新(UpdateBatch 和 CancelBatch 方法) 将更改组传输给提供者. |
adIndex | 可以使用 Index 属性命名索引. |
adSeek | 可以使用 Seek 方法定位 Recordset 中的行. |
returns: 返回布尔型值, 指示是否支持 CursorOptions 参数所标识的所有功能.
Remarks: 使用 Supports 方法确定 Recordset 对象所支持的功能类型. 如果 Recordset 对象支持其相应常量在 CursorOptions 中的功能, 那么 Supports方法返回 True.否则返回 False.
注意 尽管 Supports 方法可对给定的功能返回 True, 但它不能保证提供者可以使功能在所有环境下均有效. Supports 方法只返回提供者是否支持指定的功能(假定符合某些条件). 例如, Supports 方法可能指示 Recordset 对象支持更新 (即使游标基于多个表的合并), 但并且某些列仍然无法更新.
Bookmark 方法:
void CAdoRecordSet::GetBookmark()
获取当前记录的书签.
BOOL CAdoRecordSet::SetBookmark()
将当前记录移至书签指向的记录.
AppendChunk/GetChunk 方法:
BOOL AppendChunk(FieldPtr pField, LPVOID lpData, UINT nBytes);
BOOL AppendChunk(long index, LPVOID lpData, UINT nBytes);
BOOL AppendChunk(LPCSTR strFieldName, LPVOID lpData, UINT nBytes);
BOOL AppendChunk(long index, LPCTSTR lpszFileName);
BOOL AppendChunk(LPCSTR strFieldName, LPCTSTR lpszFileName);
BOOL GetChunk(FieldPtr pField, LPVOID lpData);
BOOL GetChunk(long index, LPVOID lpData);
BOOL GetChunk(LPCSTR strFieldName, LPVOID lpData);
BOOL GetChunk(long index, CBitmap &bitmap);
BOOL GetChunk(LPCSTR strFieldName, CBitmap &bitmap);
写入或取出BLOB数据
strFieldName 文件名:
lpData 指向缓冲区的指针:
nBytes 要写入或读出的数据的字节数:
例如:
// 写入 ----------------
m_adoRecordSet.AddNew();
m_adoRecordSet.SetFieldValue("ID", 5);
m_adoRecordSet.AppendChunk("Document", "C:\\doc1.txt");
m_adoRecordSet.Update();
// 读取 ----------------
long size = GetFieldActualSize(strFieldName);
if ((adFldLong & GetFieldAttributes(strFieldName)) && size > 0)
{
BYTE *lpData = new BYTE[size];
if (GetChunk(GetField(strFieldName), (LPVOID)lpData))
{
.....
DoSomeThing();
}
delete[] lpData;
lpData = NULL;
}
Clone 方法:
BOOL CAdoRecordSet::Clone(CAdoRecordSet &pRecordSet)
克隆一份副本
Find 方法:
BOOL CAdoRecordSet::Find(LPCTSTR lpszFind, SearchDirectionEnum SearchDirection)
BOOL CAdoRecordSet::FindFirst(LPCTSTR lpszFind)
查找满足条件的记录.
Filter 方法:
BOOL CAdoRecordSet::SetFilter(LPCTSTR lpszFilter)
过滤出满足条件的记录.
CAdoRecordset m_pRs;
m_pRs = CAdoRecordSet(&m_pConnection);
if(m_pRs.Open("ado", CADORecordset::openTable))
{
CString strFilter = _T("Name <> ''anyou'' And Age > 20");
m_pRs.SetFilter(strFilter);
.
.
m_pRs.Close();
}
更多精彩
赞助商链接