现在的位置: 首页 > 综合 > 正文

一套ADO类-版本2.20

2018年06月07日 ⁄ 综合 ⁄ 共 91608字 ⁄ 字号 评论关闭

A set of ADO classes - version 2.20 - CodeProject

 

为了方便大家下载源代码 ,我的资源中也放了一份拷贝。

英语挺烂的,硬着头皮算是翻译下来了,第一次做网页排版,有什么错误请大家回帖指出来,我好方便修改。

概述

概述

 

 

我创建这些类使得我们更容易使用ADO来做我们的工作。比如我创建了CADODatabse和CADORecordset类

 

 

CADODatabse类 
CADODatabse类封装了一套_ConnectionPtr智能指针相关的函数

CADODatabase::CADODatabase 
创建一个CADODatabase对象

  1. // 函数声明  
  2. CADODatabase();     
  3.      

CADODatabase::Open 
Open函数打开一个数据库连接

  1. // 函数声明  
  2. BOOL Open(LPCTSTR lpstrConnection = _T(""));  
  3. throw(CADOException);     
  4.      

参数
LPCTSTR lpstrConnection 连接字符串
查看示例 
注:该类有个函数SetConnectionString,您可以通过这个函数插入连接字符串。在这种情况下您可以执行如下操作:

  1. // 程序例子  
  2. //Sample with Connection string for SQL Server  
  3. CADODatabase* pAdoDb = new CADODatabase();  
  4. CString strConnection = _T("");  
  5. strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;"  
  6.                    "Trusted_Connection=Yes;"  
  7.                    "Data Source=Access Sql Server;catalog=sampledb");  
  8. pAdoDb->SetConnectionString(strConnection);  
  9. if(pAdoDb->Open())  
  10.   DoSomething();  
  11. .  
  12. .  
  13. .  
  14. //Sample with Connection String for Access database  
  15. CADODatabase* pAdoDb = new CADODatabase();  
  16. CString strConnection = _T("");  
  17. strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;"  
  18.               "Data Source=C://VCProjects//ADO//Test//dbTest.mdb");  
  19. pAdoDb->SetConnectionString(strConnection);  
  20. if(pAdoDb->Open())  
  21. {  
  22.   DoSomething();  
  23.   .  
  24.   .  
  25.   .  
  26.   pAdoDb->Close();  
  27. }  
  28. delete pAdoDb;  
  29.      

CADODatabase::Execute 
Excute函数在一个打开的数据库连接中执行一个SQL语句

  1. // 函数声明   
  2. BOOL Execute(LPCTSTR lpstrExec);  
  3. throw(CADOException);    
  4.      

参数
LPCTSTR lpstrExec - 一个包含需要执行的SQL语句字符串指针

  1. // 程序例子  
  2. CADODatabase* pAdoDb = new CADODatabase();  
  3. CString strConnection = _T("");  
  4. strConnection = _T("Provider=MSDASQL;"  
  5.                    "PersistSecurityInfo=False;"  
  6.                    "Trusted_Connection=Yes"  
  7.                 "Data Source=Access Sql Server;catalog=sampledb");  
  8. if(pAdoDb->Open(strConnection))  
  9.  pAdoDb->Execute("Delete From tblClients Where Cheker = 3");  
  10.      

返回值
假如执行成功,这个函数返回TRUE

CADODatabase::GetRecordsAffected 
GetRecordsAffected返回上一次SQL命令执行后影响的记录个数

  1. // 函数声明  
  2. int GetRecordsAffected();     
  3.      

CADODatabase::GetActiveConnection 
GetActiveConnection返回活动连接(当前的连接)

  1. // 函数声明  
  2. _ConnectionPtr GetActiveConnection();     
  3.      

CADODatabase::GetRecordCount 
GetRecordCount返回一个查询中受影响的记录数

  1. // 函数声明  
  2. DWORD GetRecordCount(_RecordsetPtr m_pRs);     
  3.      

参数
_RecorsetPtr m_Prs -要查询的记录集

CADODatabase::BeginTransaction 
调用此函数来初始化一个事务。您调用BeginTransaction以后,当您提交事务后更新才使得您的数据使之生效。

  1. // 函数声明  
  2. long BeginTransaction();     
  3.      

CADODatabase::CommitTransaction 
调用CommitTransaction函数提交事务,比如,保存一组编辑和一个或者多个数据库更新

  1. // 函数声明  
  2. long CommitTransaction();     
  3.      

CADODatabase::RollbackTransaction 
调用RollbackTransaction函数结束当前事务和恢复在事务开始前的所有数据库状况

  1. // 函数声明   
  2. long RollbackTransaction();    
  3.      

CADODatabase::IsOpen 
IsOpen函数返回数据库连接的状态

  1. // 函数声明  
  2. BOOL IsOpen();     
  3.      

返回值
假如连接的数据库是打开的,这个函数返回TRUE

CADODatabase::Close 
Close函数关闭数据库连接

  1. // 函数声明  
  2. void Close();     
  3.      

CADODatabase::SetConnectionString 
使用SetConnectionString您可以插入一个连接字符串

  1. // 函数声明  
  2. void SetConnectionString(LPCTSTR lpstrConnection);     
  3.      

参数
LPCTSTR lpstrConnection -一个用于打开数据库的连接字符串
见CADODatabase::Open();

CADODatabase::GetConnectionString 
GetConnectionString函数返回用来连接数据库的连接字符串

  1. // 函数声明   
  2. CString GetConnectionString();    
  3.      

CADODatabase::SetConnectionMode 
SetConnectionMode函数设置连接模式

  1. // 函数声明  
  2. void SetConnectionMode(cadoConnectModeEnum nMode);     
  3.      

参数
cadoConnectModeEnum nMode-一个变量,它定义要使用的连接方式。它可以是下列之一:

  • CADODatabase::connectModeUnknown
  • CADODatabase::connectModeRead
  • CADODatabase::connectModeWrite
  • CADODatabase::connectModeReadWrite
  • CADODatabase::connectModeShareDenyRead
  • CADODatabase::connectModeShareDenyWrite
  • CADODatabase::connectModeShareExclusive
  • CADODatabase::connectModeShareDenyNone

CADODatabase::GetLastError 
GetLastError函数返回最后一个错误代码

  1. // 函数声明   
  2. DWORD GetLastError();    
  3.      

CADODatabase::GetLastErrorString 
GetLastErrorString返回最后个错误的字符串

  1. // 函数声明  
  2. CString GetLastErrorString();  
  3.      

CADORecordset 类 
CADORecordset 类封装了一套与_RecordsetPtr智能指针相关的函数

CADORecordset::CADORecordset 
创建一个CADORecordset对象

  1. // 函数声明   
  2. CADODatabase();  
  3. CADORecordset(CADODatabase* pAdoDatabase);    
  4.      

参数
CADODatabase* pAdoDatabase - 一个CADODatabase对象指针

CADORecordset::Open 
Open函数打开一个记录集

  1. // 函数声明  
  2. BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""),   
  3.                      int nOption = CADORecordset::openUnknown);  
  4. BOOL Open(LPCTSTR lpstrExec = _T(""),   
  5.                      int nOption = CADORecordset::openUnknown);  
  6.      

参数
_ConnectionPtr mpdb -一个连接指针
LPCTSTR lpstrExec - 一个字符串指针,包含一个SQL SELECT语句
int nOption - 一个整形数,它定义访问模式。这些值如下

  • CADORecordset::openUnknown
  • CADORecordset::openQuery
  • CADORecordset::openTable
  • CADORecordset::openStoredProc


返回值
假如执行成功返回TRUE
查看示例

CADORecordset::Execute 
Execute函数打开一个记录集

  1. // 函数声明  
  2. BOOL Execute(CADOCommand* pCommand);  
  3. throw(CADOException);     
  4.      

参数
CADOCommand* pCommand - 一个CADOCommand指针
返回值
假如执行成功返回TRUE
查看示例

CADORecordset::GetQuery; 
GetQuery返回包含SELECT关键字的SQL命令字符串

  1. // 函数声明  
  2. CString GetQuery();  
  3.      

 

CADORecordset::SetQuery 

  1. // 函数声明  
  2. void SetQuery(LPCSTR strQuery);  
  3.      

参数
LPCTSTR strQuery - 一个字符串指针,包含一个SQL SELECT语句

CADORecordset::RecordBinding 

  1. // 函数声明  
  2. BOOL RecordBinding(CADORecordBinding pAdoRecordBinding);     
  3.      

参数
CADORecordBinding pAdoRecordBinding

CADORecordset::GetRecordCount 
GetRecordCount 函数返回可以在记录集中访问的记录数

  1. // 函数声明  
  2. DWORD GetRecordCount();     
  3.      

查看示例

CADORecordset::IsOpen 
IsOpen 测试记录集是否打开

  1. // 函数声明  
  2. BOOL IsOpen();     
  3.      

返回值
假如这个记录集没有关闭,这个函数返回TRUE

CADORecordset::Close 
Close函数关闭记录集

  1. // 函数声明  
  2. void Close();     
  3.      

查看示例

CADORecordset::GetFieldCount 
GetRecordCount 函数返回记录集中的字段数目

  1. // 函数声明  
  2. long GetFieldCount();     
  3.      

CADORecordset::GetFieldValue 

  1. // 函数声明  
  2. BOOL GetFieldValue(LPCTSTR lpFieldName, int nValue);  
  3. BOOL GetFieldValue(int nIndex, int nValue);  
  4. BOOL GetFieldValue(LPCTSTR lpFieldName, long lValue);  
  5. BOOL GetFieldValue(int nIndex, long lValue);  
  6. BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);  
  7. BOOL GetFieldValue(int nIndex, unsigned long ulValue);  
  8. BOOL GetFieldValue(LPCTSTR lpFieldName, double dbValue);  
  9. BOOL GetFieldValue(int nIndex, double dbValue);  
  10. BOOL GetFieldValue(LPCTSTR lpFieldName, CString strValue,   
  11.                          CString strDateFormat = _T(""));  
  12. BOOL GetFieldValue(int nIndex, CString strValue,   
  13.                          CString strDateFormat = _T(""));  
  14. BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime time);  
  15. BOOL GetFieldValue(int nIndex, COleDateTime time);  
  16. BOOL GetFieldValue(LPCTSTR lpFieldName, bool bValue);  
  17. BOOL GetFieldValue(int nIndex, bool bValue);  
  18. BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);  
  19. BOOL GetFieldValue(int nIndex, COleCurrency cyValue);  
  20. throw(CADOException);     
  21.      

参数
LPCTSTR lpFieldName -一个包含有字段名称的字符串指针
int nIndex -一个在记录集的所有字段集中以零为基准,需要查看的索引
double dbValue - 一个将要储存字段值的引用变量
long lValue - 一个将要储存字段值的引用变量
unsigned long ulValue - 一个将要储存字段值的引用变量
int nValue - 一个将要储存字段值的引用变量
CString strValue- 一个将要储存字段值的引用变量
CString strDateFormat 一个时间格式字符串,类似strftime格式的字符,他们普遍是
%a - 平日名称缩写 
%A - 全平日名称 
%b - 月份名称 
%B - 月份的全称
%c - 日期和时间是用本地时间表示
%d - 十进制表示月的天(01-31)
%H - 24时时间格式(00-23)
%I - 12时时间格式(01-12)
%j - 十进制表示年的天(001-366)
%m - 十进制表示的月(01-12)
%M - 十进制表示的分(00-59)
%p - A.M./P.M表示当前12时时间格式的时间
%S - 十进制表示的秒(00-59)
%U - 十进制表示年的周,星期日表示一周的第一天(00-53)
%w - 十进制表示的周几(0-6,星期天是0)
%W - 十进制表示年的周,星期一表示一周的第一天(00-53)
%x - 本地时间的日期
%X - 本地时间的时间
%y - 十进制的不带一世纪的年(00-99)
%Y - 十进制带一世纪的年
COleDateTime time - 一个将要储存字段值的引用变量
bool bValue- 一个将要储存字段值的引用变量
COleCurrency cyValue - 一个将要储存字段值的引用变量

查看示例

CADORecordset::IsFieldNull 
IsFieldNull函数测试字段数据是否为空

  1. // 函数声明  
  2. BOOL IsFieldNull(LPCTSTR lpFieldName);  
  3. BOOL IsFieldNull(int nIndex);  
  4. throw(CADOException);     
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据为空,该函数返回TRUE

 

CADORecordset::IsFieldEmpty 
IsFieldEmpty函数测试字段数据是否为空

  1. // 函数声明   
  2. BOOL IsFieldEmpty(LPCTSTR lpFieldName);  
  3. BOOL IsFieldEmpty(int nIndex);  
  4. throw(CADOException);    
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据位空该函数返回TRUE

CADORecordset::IsEof 

  1. // 函数声明  
  2. BOOL IsEof();     
  3.      

返回值
假如当前位置没有包含任何记录,该函数返回TRUE
查看示例

CADORecordset::IsBof 

  1. // 函数声明  
  2. BOOL IsBof();   
  3.      

返回值
假如当前位置是记录的底部,该函数返回TRUE

CADORecordset::MoveFirst
CADORecordset::MoveNext
CADORecordset::MovePrevious
CADORecordset::MoveLast
 
这些函数使得第一个/下一个/上一个/或者最后个记录集中的记录作为当前记录

  1. // 函数声明   
  2. void MoveFirst();  
  3. void MoveNext();  
  4. void MovePrevious();  
  5. void MoveLast();    
  6.      

查看示例

CADORecordset::GetAbsolutePage
CADORecordset::SetAbsolutePage
 
表示当前记录在那个页

  1. // 函数声明   
  2. long GetAbsolutePage();  
  3. void SetAbsolutePage(int nPage);  
  4.      

参数
int nPage - 页基数是1
查看示例

CADORecordset::GetPageCount 
GetPageCount返回在一个记录集中页的数量

  1. // 函数声明  
  2. long GetPageCount();     
  3.      

查看示例

CADORecordset::GetPageSize
CADORecordset::SetPageSize
 
指示每页有多少记录

  1. // 函数声明  
  2. long GetPageSize();  
  3. void SetPageSize(int nSize);  
  4.      

参数
int nSize - 设置每页记录的个数
例子

  1. // 程序例子  
  2. CADORecordset* pRs = new CADORecordset(pDb);  
  3. if(pRs->Open("MyBigTable", CADORecordset::openTable))  
  4. {  
  5.     pRs->SetPageSize(5);  
  6.     for(register int nPageIndex = 1; nPageIndex <= pRs->GetPageCount();   
  7.         nPageIndex++)  
  8.     {  
  9.         pRs->SetAbsolutePage(nPageIndex);  
  10.         for(register int nRecNumber = 0; nRecNumber < pRs->GetPageSize();   
  11.             nRecNumber++)  
  12.         {  
  13.             long lVal;  
  14.             pRs->GetFieldValue("ID", lVal);  
  15.             pRs->MoveNext();  
  16.             if(pRs->IsEof())  
  17.                 break;  
  18.         }  
  19.     }  
  20.     pRs->Close();  
  21. }  
  22. delete pRs;  
  23.      

CADORecordset::GetAbsolutePosition
CADORecordset::SetAbsolutePosition
 
表示当前记录在记录集中的位置

  1. // 函数声明  
  2. long GetAbsolutePosition();  
  3. void SetAbsolutePosition(int nPosition);  
  4.      

参数
int nPosition - 移动到的记录集位置
GetAbsolutePosition() 会返回记录的位置或者下面中的一个值

CADORecordset::GetFieldInfo 
GetFieldInfo返回一个字段的属性

  1. // 函数声明  
  2. BOOL GetFieldInfo(LPCTSTR lpFieldName, CAdoFieldInfo* fldInfo);  
  3. BOOL GetFieldInfo(int nIndex, CAdoFieldInfo* fldInfo);    
  4.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CAdoFieldInfo* fldInfo - 一个返回的字段属性结构体

  1. // 结构体声明  
  2. struct CADOFieldInfo  
  3. {  
  4.     char m_strName[30];  
  5.     short m_nType;  
  6.     long m_lSize;  
  7.     long m_lDefinedSize;  
  8.     long m_lAttributes;  
  9.     short m_nOrdinalPosition;  
  10.     BOOL m_bRequired;  
  11.     BOOL m_bAllowZeroLength;  
  12.     long m_lCollatingOrder;  
  13. };    
  14.      

CADOFieldInfo类的成员变量m_nType可取如下值中的一个:

  • CADORecordset::typeEmpty
  • CADORecordset::typeTinyInt
  • CADORecordset::typeSmallInt
  • CADORecordset::typeInteger
  • CADORecordset::typeBigInt
  • CADORecordset::typeUnsignedTinyInt
  • CADORecordset::typeUnsignedSmallInt
  • CADORecordset::typeUnsignedInt
  • CADORecordset::typeUnsignedBigInt
  • CADORecordset::typeSingle
  • CADORecordset::typeDouble
  • CADORecordset::typeCurrency
  • CADORecordset::typeDecimal
  • CADORecordset::typeNumeric
  • CADORecordset::typeBoolean
  • CADORecordset::typeError
  • CADORecordset::typeUserDefined
  • CADORecordset::typeVariant
  • CADORecordset::typeIDispatch
  • CADORecordset::typeIUnknown
  • CADORecordset::typeGUID
  • CADORecordset::typeDate
  • CADORecordset::typeDBDate
  • CADORecordset::typeDBTime
  • CADORecordset::typeDBTimeStamp
  • CADORecordset::typeBSTR
  • CADORecordset::typeChar
  • CADORecordset::typeVarChar
  • CADORecordset::typeLongVarChar
  • CADORecordset::typeWChar
  • CADORecordset::typeVarWChar
  • CADORecordset::typeLongVarWChar
  • CADORecordset::typeBinary
  • CADORecordset::typeVarBinary
  • CADORecordset::typeLongVarBinary
  • CADORecordset::typeChapter
  • CADORecordset::typeFileTime
  • CADORecordset::typePropVariant
  • CADORecordset::typeVarNumeric
  • CADORecordset::typeArray

 

例子

  1. // 程序例子  
  2. if(prs->Open("Clients", CADORecordset::openTable))  
  3. {  
  4.     CADOFieldInfo pInfo;  
  5.     prs->GetFieldInfo("Description", &pInfo);  
  6.     if(pInfo.m_nType == CADORecordset::typeVarChar)  
  7.         AfxMessageBox("The type Description Field Is VarChar");  
  8. }  
  9. if(prs->Open("TestTable", CADORecordset::openTable))  
  10. {  
  11.     CADOFieldInfo* fInfo = new CADOFieldInfo;  
  12.     prs.GetFieldInfo(0, fInfo);  
  13.     CString strFieldName = fInfo->m_strName;  
  14.     prs->Close();  
  15. }  
  16.      

返回值
假如执行成功返回TRUE

CADORecordset::GetChunk 
该函数返回所有的,或者部分大文本,二进制数据字段内容

  1. // 函数声明   
  2. BOOL GetChunk(LPCTSTR lpFieldName, CString& strValue);  
  3. BOOL GetChunk(int nIndex, CString& strValue);  
  4. BOOL GetChunk(LPCTSTR lpFieldName, LPVOID pData);  
  5. BOOL GetChunk(int nIndex, LPVOID pData);   
  6.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CString& strValue 一个包含返回数据的字符串指针
LPVOID pData - 一个包含有返回数据的指针
返回值
假如执行成功返回TRUE
查看示例

CADORecordset::AppendChunk 
该函数追加数据到一个大的文本或者二进制数据到字段中

  1. // 函数声明  
  2. BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);  
  3. BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);   
  4. throw(CADOException);    
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
LPVOID lpData - 一个包含要添加数据到字段的指针
UINT nBytes - 一个无符号整形,指示要插入的数据大小
返回值
假如执行成功返回TRUE
例子

  1. // 程序例子  
  2. //Sample of AppendChunck  
  3. prs.AddNew();  
  4. prs.SetFieldValue("ID", 5);  
  5. prs.SetFieldValue("Description""Client 05");  
  6. prs.SetFieldValue("Checker", 1);  
  7. prs.AppendChunk("Document",   
  8.     "This Document is the story of Bob and his Friends...", 37);  
  9. prs.Update();  
  10. //Sample of GetChunck  
  11. char data[1024];  
  12. prs.GetChunk("Document", (LPVOID)&data);  
  13.      

CADORecordset::GetString 
该函数以字符串的形式返回一个记录

  1. // 函数声明  
  2. CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull,   
  3.   long numRows = 0);     
  4.      

参数
LPCTSTR lpCols - 行分隔符
LPCTSTR lpRows - 列分隔符
LPCTSTR lpNull - NUL值的替代字符串
long numRows - 受影响的列数

CADORecordset::GetLastError 
GetLastError函数返回最后一个错误代码

  1. // 函数声明  
  2. DWORD GetLastError();     
  3.      

CADORecordset::GetLastErrorString 
GetLastErrorString函数返回最后一个错误的字符串

  1. // 函数声明  
  2. CString GetLastErrorString();     
  3.      

CADORecordset::AddNew 
AddNew 函数在一个打开的记录集中添加个一个记录

  1. // 函数声明  
  2. BOOL AddNew();  
  3. throw(CADOException);    
  4.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::Edit 
Edit函数允许在一个打开的记录集中更改当前的记录

  1. // 函数声明  
  2. void Edit();    
  3.      

CADORecordset::Delete 
Delete函数在一个打开的记录集中删除当前的的记录

  1. // 函数声明  
  2. BOOL Delete();  
  3.      

返回值
执行成功返回TRUE

CADORecordset::Update 
Update函数在当前记录中更新待更新的数据

  1. // 函数声明  
  2. BOOL Update();   
  3. throw(CADOException);  
  4.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::CancelUpdate 
CancelUpdate函数在一个打开的记录集中取消任何待更新的数据

  1. // 函数声明   
  2. void CancelUpdate();    
  3.      

CADORecordset::SetFieldValue 
SetFieldValue函数设置一个字段的值

  1. // 函数声明  
  2. BOOL SetFieldValue(int nIndex, int nValue);  
  3. BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);  
  4. BOOL SetFieldValue(int nIndex, long lValue);  
  5. BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);  
  6. BOOL SetFieldValue(int nIndex, unsigned long ulValue);  
  7. BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);  
  8. BOOL SetFieldValue(int nIndex, double dblValue);  
  9. BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);  
  10. BOOL SetFieldValue(int nIndex, CString strValue);  
  11. BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);  
  12. BOOL SetFieldValue(int nIndex, COleDateTime time);  
  13. BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);  
  14. BOOL SetFieldValue(int nIndex, bool bValue);  
  15. BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);  
  16. BOOL SetFieldValue(int nIndex, COleCurrency cyValue);  
  17. BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);   
  18.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
int nValue - 一个包含字段值的对象指针
long lValue - 一个包含字段值的对象指针
unsigned long lValue - 一个包含字段值的对象指针
double dbValue - 一个包含字段值的对象指针
CString strValue - 一个包含字段值的对象指针
COleDateTime time - 一个包含字段值的对象指针
bool bValue - 一个包含字段值的对象指针
COleCurrency cyValue - 一个包含字段值的对象指针
返回值
执行成功返回TRUE
查看示例 
例子

  1. // 程序例子  
  2. CADORecordset* prs = new CADORecordset(m_pAdoDb);  
  3. prs->Open("Test", openTable);  
  4. prs->AddNew();  
  5. prs->SetFieldValue(0, "dataU");  
  6. prs->SetFieldValue(1, "data01");  
  7. prs->SetFieldValue(2, (long)51000);  
  8. COleDateTime time = COleDateTime(2001,6,15, 10, 8, 30);  
  9. prs->SetFieldValue(3, time);  
  10. prs->Update();  
  11. prs->Close();  
  12. delete prs;  
  13.      

CADORecordset::Find 
Find 函数使用比较操作符从当前位置查找一个字符串在一个打开的记录集中的位置

  1. // 函数声明  
  2. BOOL Find(LPCTSTR lpFind,   
  3. int nSearchDirection = CADORecordset::searchForward);  
  4.      

参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
int nSearchDirection - 一个表示操作类型的值,可能取值是:
CADORecordset::searchForward - 向后查找
CADORecordset::searchBackward - 向后查找
返回值
执行成功返回TRUE
例子

  1. // 程序例子  
  2. if(prs.Find("Field0 LIKE 'dataU%'"))  
  3. {  
  4.   prs.Delete();  
  5.   while(prs.FindNext())  
  6.     prs.Delete();  
  7. }  
  8.      

CADORecordset::FindFirst 
FindFirst函数从记录集起始位置开始查找一个字符串在一个打开的记录集中的所在位置

  1. // 函数声明   
  2. BOOL FindFirst(LPCTSTR lpFind);  
  3.      

参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
返回值
执行成功返回TRUE

CADORecordset::FindNext 
FindNext 使用类似FindFirst或者Find的操作,从记录集最后位置开始查找一个字符串在一个打开的记录集中的所在位置

  1. // 函数声明  
  2. BOOL FindNext();     
  3.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::GetBookmark 
GetBookmark函数获取在其他时间保存的记录位置

  1. // 函数声明  
  2. BOOL GetBookmark();     
  3.      

返回值
执行成功返回TRUE

CADORecordset::SetBookmark 
SetBookmark函数保存当前记录的位置

  1. // 函数声明  
  2. void SetBookmark();     
  3.      

返回值
执行成功返回TRUE

CADORecordset::SetFilter 
SetFilter在一个打开的记录集中设置一个过滤器

  1. // 函数声明   
  2. BOOL SetFilter(LPCTSTR strFilter);  
  3. throw(CADOException);   
  4.      

参数
LPCTSTR strFilter - 一个由一个或者多个用AND或者OR操作关联在一起的个别从句组成的字符串
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset* pRs = new CADORecordset(pDb);  
  3. if(pRs->Open("tblTest", CADORecordset::openTable))  
  4. {  
  5.     CString strFilter = _T("LastName = 'Smith' And Age > 30");  
  6.     pRs->SetFilter(strFilter);  
  7.     .  
  8.     .  
  9.     pRs->Close();  
  10. }  
  11. delete pRs  
  12.      

CADORecordset::SetSort 
SetSort函数在一个CADORecordset对象中为所有的记录设置分类排序

  1. // 函数声明  
  2. BOOL SetSort(LPCTSTR lpstrCriteria);  
  3. throw(CADOException);    
  4.      

参数
LPCTSTR lpstrCriteria - 一个包含ORDER BY从句SQL语句的字符串
返回值
执行成功返回TRUE

CADORecordset::GetRecordset 
GetRecordset函数返回一个指向打开的记录集的指针

  1. // 函数声明   
  2. _RecordsetPtr GetRecordset();   
  3.      

CADORecordset::GetActiveConnection 
GetActiveConnection返回活动连接

  1. // 函数声明  
  2. _ConnectionPtr GetActiveConnection();  
  3.      

CADORecordset::Clone 
Clone函数从一个现有的CADORecordset对象中创建一个完全一样的CADORecordset对象

  1. // 函数声明   
  2. BOOL Clone(CADORecordset pAdoRecordset);  
  3. throw(CADOException);  
  4.      

参数
CADORecordset pAdoRecordset 是一个现有的CADORecordset对象
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset m_pRs; //Original Recordset  
  3. CADORecordset RS;   //Duplicate Recordset  
  4. CADORecordset* pRs = CADORecordset(m_pDb);  
  5. if(pRs->Open("tblTest", CADORecordset::openTable)) //Open the Original   
  6. Recordset  
  7. {  
  8.     pRs->Clone(RS); //Create the clone of the original Recordset  
  9.     long lClonRecs = RS.GetRecordCount();  
  10.     long lOrigRecs = m_pRs->GetRecordCount();  
  11.     .  
  12.     .  
  13.     RS.Close();  
  14.     pRs->Close();  
  15. }  
  16. delete pRs;  
  17.      

CADORecordset::SaveAsXML 
SaveAsXML 函数保存打开的记录集到一个XML格式的文件中。

  1. // 函数声明  
  2. BOOL SaveAsXML(LPCTSTR lpstrXMLFile);<br />     
  3.      

参数
LPCTSTR strXMLFile - 一个字符串,指示将保存记录集的完整的路径和文件名
返回值
执行成功返回TRUE

CADORecordset::OpenXML 
OpenXML函数打开一个XML文件格式到记录集中。

  1. // 函数声明  
  2. BOOL OpenXML(LPCTSTR lpstrXMLFile);   
  3.      

参数
LPCTSTR strXMLFile - 一个字符串,指示将要打开的完整的路径和文件名的XML文件
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset* pRs = CADORecordset(pDB);  
  3. if(prs->OpenXML("C://My.XML"))  
  4. {  
  5.     CString strClient = _T("");  
  6.     double dblVal = 0;  
  7.     long lrecs = prs->GetRecordCount();  
  8.     if(!prs->IsEof())  
  9.         prs->MoveFirst();  
  10.     prs->GetFieldValue("Budget", dblVal);  
  11.     prs->GetFieldValue("ClientName", strClient);  
  12.     prs->Close();  
  13. }  
  14.      

//函数声明

CADORecordset::OpenSchema 
OpenSchema函数从提供者获取数据库图表信息

  1. // 函数声明   
  2. BOOL OpenSchema(int nSchema, LPCTSTR SchemaID = _T(""));  
  3. throw(CADOException);  
  4.      

参数
int nSchema - 一个指示要图表查询类型的变量
LPCTSTR SchemaID = _T("") - 未被OLE DB定义用于提供者图表查询的GUID

Constant Value Description Constraint Columns
schemaAsserts 0 Returns the assertions defined in the catalog that are owned by a given user.

(ASSERTIONS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaCatalogs 1 Returns the physical attributes associated with catalogs accessible from the DBMS.

(CATALOGS Rowset )

CATALOG_NAME
schemaCharacterSets 2 Returns the character sets defined in the catalog that are accessible to a given user.

(CHARACTER_SETS Rowset )

CHARACTER_ SET_CATALOG *
CHARACTER_ SET_SCHEMA *
CHARACTER_SET _NAME *
schemaCheckConstraints 5 Returns the check constraints defined in the catalog that are owned by a given user.

(CHECK_CONSTRAINTS Rowset)

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaCollations 3

Returns the character collations defined in the catalog that are accessible to a given user.

(COLLATIONS Rowset )

COLLATION_ CATALOG *
COLLATION_SCHEMA 
COLLATION_NAME
schemaColumnPrivileges 13

Returns the privileges on columns of tables defined in the catalog that are available to, or granted by, a given user.

(COLUMN_PRIVILEGES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME 
GRANTOR 
GRANTEE
schemaColumns 4

Returns the columns of tables (including views) defined in the catalog that are accessible to a given user.

(COLUMNS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaColumnsDomainUsage 11 Returns the columns defined in the catalog that are dependent on a domain defined in the catalog and owned by a given user.

(COLUMN_DOMAIN_USAGE Rowset )

DOMAIN_CATALOG 
DOMAIN_SCHEMA 
DOMAIN_NAME 
COLUMN_NAME
schemaConstraintColumnUsage 6 Returns the columns used by referential constraints, unique constraints, check constraints, and assertions, defined in the catalog and owned by a given user.

(CONSTRAINT_COLUMN_USAGE Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaConstraintTableUsage 7 Returns the tables that are used by referential constraints, unique constraints, check constraints, and assertions defined in the catalog and owned by a given user.

(CONSTRAINT_TABLE_USAGE Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaCubes 32 Returns information about the available cubes in a schema (or the catalog, if the provider does not support schemas).

(CUBES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME
schemaDBInfoKeywords 30 Returns a list of provider-specific keywords.

(IDBInfo::GetKeywords* )

<None>
schemaDBInfoLiterals 31 Returns a list of provider-specific literals used in text commands.

(IDBInfo::GetLiteralInfo* )

<None>
schemaDimensions 33 Returns information about the dimensions in a given cube. It has one row for each dimension.

(DIMENSIONS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_NAME 
DIMENSION_ UNIQUE_NAME *
schemaForeignKeys 27 Returns the foreign key columns defined in the catalog by a given user.

(FOREIGN_KEYS Rowset )

PK_TABLE_CATALOG 
PK_TABLE_SCHEMA 
PK_TABLE_NAME 
FK_TABLE_CATALOG 
FK_TABLE_SCHEMA 
FK_TABLE_NAME
schemaHierarchies 34 Returns information about the hierarchies available in a dimension.

(HIERARCHIES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_NAME 
HIERARCHY_ UNIQUE_NAME *
schemaIndexes 12 Returns the indexes defined in the catalog that are owned by a given user.

(INDEXES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
INDEX_NAME 
TYPE 
TABLE_NAME
schemaKeyColumnUsage 8 Returns the columns defined in the catalog that are constrained as keys by a given user.

(KEY_COLUMN_USAGE Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME 
TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaLevels 35 Returns information about the levels available in a dimension.

(LEVELS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_NAME 
LEVEL_ UNIQUE_NAME *
schemaMeasures 36 Returns information about the available measures.

(MEASURES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
MEASURE_NAME 
MEASURE_ UNIQUE_NAME *
schemaMembers 38 Returns information about the available members.

(MEMBERS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_ UNIQUE_NAME *
LEVEL_NUMBER 
MEMBER_NAME 
MEMBER_UNIQUE _NAME *
MEMBER_CAPTION 
MEMBER_TYPE 
Tree operator (For more information, see the OLE DB for OLAP documentation.)
schemaPrimaryKeys 28 Returns the primary key columns defined in the catalog by a given user.

(PRIMARY_KEYS Rowset )

PK_TABLE_CATALOG 
PK_TABLE_SCHEMA 
PK_TABLE_NAME
schemaProcedureColumns 29 Returns information about the columns of rowsets returned by procedures.

(PROCEDURE_COLUMNS Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
COLUMN_NAME
schemaProcedureParameters 26 Returns information about the parameters and return codes of procedures.

(PROCEDURE_PARAMETERS Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
PARAMETER_NAME
schemaProcedures 16 Returns the procedures defined in the catalog that are owned by a given user.

(PROCEDURES Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
PROCEDURE_TYPE
schemaProperties 37 Returns information about the available properties for each level of the dimension.

(PROPERTIES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_ UNIQUE_NAME *
MEMBER_ UNIQUE_NAME *
PROPERTY_TYPE 
PROPERTY_NAME
schemaProviderSpecific -1 Used if the provider defines its own nonstandard schema queries. <Provider specific>
schemaProviderTypes 22 Returns the (base) data types supported by the data provider.

(PROVIDER_TYPES Rowset )

DATA_TYPE 
BEST_MATCH
schemaReferentialConstraints 9 Returns the referential constraints defined in the catalog that are owned by a given user.

(REFERENTIAL_CONSTRAINTS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaSchemata 17 Returns the schemas (database objects) that are owned by a given user.

(SCHEMATA Rowset )

CATALOG_NAME 
SCHEMA_NAME 
SCHEMA_OWNER
schemaSQLLanguages 18 Returns the conformance levels, options, and dialects supported by the SQL-implementation processing data defined in the catalog.

(SQL_LANGUAGES Rowset )

<None>
schemaStatistics 19 Returns the statistics defined in the catalog that are owned by a given user.

(STATISTICS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaTableConstraints 10 Returns the table constraints defined in the catalog that are owned by a given user.

(TABLE_CONSTRAINTS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME 
TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
CONSTRAINT_TYPE
schemaTablePrivileges 14 Returns the privileges on tables defined in the catalog that are available to, or granted by, a given user.

(TABLE_PRIVILEGES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
GRANTOR 
GRANTEE
schemaTables 20 Returns the tables (including views) defined in the catalog that are accessible to a given user.

(TABLES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
TABLE_TYPE
schemaTranslations 21 Returns the character translations defined in the catalog that are accessible to a given user.

(TRANSLATIONS Rowset )

TRANSLATION_ CATALOG *
TRANSLATION_ SCHEMA *
TRANSLATION _NAME *
schemaTrustees 39 Reserved for future use.  
schemaUsagePrivileges 15 Returns the USAGE privileges on objects defined in the catalog that are available to, or granted by, a given user.

(USAGE_PRIVILEGES Rowset )

OBJECT_CATALOG 
OBJECT_SCHEMA 
OBJECT_NAME 
OBJECT_TYPE 
GRANTOR 
GRANTEE
schemaViewColumnUsage 24 Returns the columns on which viewed tables, defined in the catalog and owned by a given user, are dependent.

(VIEW_COLUMN_USAGE Rowset)

VIEW_CATALOG 
VIEW_SCHEMA 
VIEW_NAME
schemaViews 23 Returns the views defined in the catalog that are accessible to a given user.

(VIEWS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaViewTableUsage 25 Returns the tables on which viewed tables, defined in the catalog and owned by a given user, are dependent.

(VIEW_TABLE_USAGE Rowset )

VIEW_CATALOG 
VIEW_SCHEMA 
VIEW_NAME

返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. try  
  3. {  
  4.     CADODatabase* pdb = new CADODatabase();  
  5.     if(pdb.Open("Data Source=sysdevpdc;Provider="   
  6.                     "MSOLAP;Initial Catalog=Foodmart 2000"))  
  7.     {  
  8.         CADORecordset prs(&pdb);  
  9.         if(prs.OpenSchema(CADORecordset::schemaMeasures))  
  10.         {  
  11.             while(!prs.IsEof())  
  12.             {dset::schemaMeasures))  
  13.         {  
  14.             while(!prs.IsEof())  
  15.             {  
  16.                 CString strValue;  
  17.                 CString strUniqueName;  
  18.                 CString strSqlColumnName;  
  19.                 int nDataType = 0;  
  20.                 int nValue = 0;  
  21.                 prs.GetFieldValue("CUBE_NAME", strValue);  
  22.                 prs.GetFieldValue("MEASURE_NAME", strValue);  
  23.                 prs.GetFieldValue("MEASURE_AGGREGATOR", nValue);  
  24.                 prs.GetFieldValue("MEASURE_UNIQUE_NAME",   
  25.                                                   strUniqueName);  
  26.                 prs.GetFieldValue("MEASURE_NAME_SQL_COLUMN_NAME",   
  27.                                                strSqlColumnName);  
  28.                 prs.GetFieldValue("DATA_TYPE", nDataType);  
  29.                 prs.MoveNext();  
  30.             }  
  31.         }  
  32.         prs.Close();  
  33.     }  
  34. }  
  35. catch(CADOException &e)  
  36. {  
  37. ...  
  38. }  
  39.      

//函数声明

CADORecordset::Requery 
Requery函数重新刷新一个打开记录集

  1. // 函数声明   
  2. BOOL Requery();  
  3. throw(CADOException);   
  4.      

返回值
执行成功返回TRUE
示例01

  1. CADODatabase* pAdoDb = new CADODatabase();  
  2. CString strConnection = "";  
  3. strConnection = _T("Provider=MSDASQL;"  
  4.                   "PersistSecurityInfo=False;Trusted_Connection=Yes  
  5. Data Source=Access Sql Server;catalog=sampledb");  
  6. if(pAdoDb->Open((LPCTSTR)strConnection))  
  7. {  
  8.     CString strQry = _T("");  
  9.     int numRecords;  
  10.     strQry.Format(_T("sp_StoreClientFields_ps '%s', %d"),   
  11.                   (LPCTSTR)strParam1, nParam2);  
  12.     CADORecordset* pRs = new CADORecordset(pAdoDb);  
  13.     if(!pRs->Open((LPCTSTR)strQry))  
  14.     {  
  15.     delete pRs;  
  16.     delete pAdoDb;  
  17.     return FALSE  
  18.     }  
  19.     numRecords = pRs->GetRecordCount();  
  20.     while(!pRs->IsEof())  
  21.     {  
  22.       CString strVal = _T("");  
  23.       int nVal = 0;  
  24.       //Get Numeric Field Value  
  25.       pRs->GetFieldValue("NumField1", nVal)  
  26.       //Get String Field Data  
  27.       pRs->GetFieldValue("StrField..", strVal)  
  28.         DoSomething(nVal, strVal);  
  29.         pRs->MoveNext();  
  30.     }  
  31.     pRs->Close();  
  32. }  
  33. else  
  34.   return FALSE;  

 

CADOParameter类 
CADOParameter类封装了一套_ParameterPtr智能指针相关的函数

CADOParameter::CADOParameter 
创建一个CADOParameter对象

  1. // 函数声明  
  2. CADOParameter(int nType, long lSize = 0, int nDirection = paramInput,   
  3.               CString strName = _T(""));  
  4.      

参数
int nType - 一个指定的CADOParameter对象数据类型整形变量。可以取CADORecordset::GetFieldInfo中一个指定值。假如您使用CADORecordset::typeNumeric 或者CADORecordset::typeDecimal,您必须定义精确度和刻度值
long lSize = 0 - 一个可选的长整形,指定了参数值最大的字节或者字符长度
int nDirection = paramInput - 一个可选的整型值,指定了CADOParameter对象的用途。可以取以下值之一:
CADOParameter::paramUnknown - 表明参数用途未知
CADOParameter::paramInput - 默认值,表明参数做为输入参数
CADOParameter::paramOutput - 表明参数作为输出参数
CADOParameter::paramInputOutput - 表明参数同时作为输入输出参数
CADOParameter::paramReturnValue - 表明参数作为一个返回值
CString strName = _T("") - 一个可选字符串,指定了CADOParameter实例名称
查看示例

CADOParameter::SetValue 
SetValue 设置CADOParameter对象的值

  1. // 函数声明  
  2. BOOL SetValue(int nValue);  
  3. BOOL SetValue(long lValue);  
  4. BOOL SetValue(double dbValue);  
  5. BOOL SetValue(CString strValue);  
  6. BOOL SetValue(COleDateTime time);  
  7. BOOL SetValue(_variant_t vtValue);     
  8.      

参数
* int nValue - 一个包含参数值的整形
* long lValue - 一个包含参数值的长整形
* double dbValue - 一个包含参数值的双精度浮点数
* CString strValue - 一个包含参数值的字符串
* COleDateTime time - 一个包含参数值的时间
* _variant_t vtValue - 一个包含参数值的变体变量
返回值
执行成功返回TRUE
查看示例

CADOParameter::SetPrecision 
SetPrecision函数设置CADOParameter对象对象的精度

  1. // 函数声明   
  2. void SetPrecision(int nPrecision);  
  3.      

CADOParameter::SetScale 
SetScale 函数设置CADOParameter对象对象的刻度

  1. // 函数声明  
  2. void SetScale(int nScale);     
  3.      

CADOParameter::GetValue 
GetValue函数返回CADOParameter对象对象的值

  1. // 函数声明   
  2. BOOL GetValue(int& nValue);  
  3. BOOL GetValue(long& lValue);  
  4. BOOL GetValue(double& dbValue);  
  5. BOOL GetValue(CString& strValue, CString strDateFormat = _T(""));  
  6. BOOL GetValue(COleDateTime& time);  
  7. BOOL GetValue(_variant_t& vtValue);    
  8.      

参数
* int& nValue - 一个将要储存参数值的整形引用
* long& lValue - 一个将要储存参数值的长整形引用
* double& dbValue - 一个将要储存参数值的双精度浮点数引用
* CString& strValue - 一个将要储存参数值的字符串引用
* CString strDateFormat = _T("") - 一个格式化字符串,类似strftime格式化的字符串
* COleDateTime& time - 一个将要储存参数值的时间引用
* _variant_t& vtValue - 一个将要储存参数值的变体变量引用 
返回值
执行成功返回TRUE
查看示例

CADOParameter::SetName 
SetName函数设置CADOParameter对象名称

  1. // 函数声明  
  2. CString SetName(CString strName);    
  3.      

参数
CString strName - 一个指定参数名字的字符串

CADOParameter::GetName 
GetName函数返回CADOParameter对象名称

  1. // 函数声明  
  2. CString GetName();  
  3.      

CADOCommand::GetType
GetType函数返回CADOParameter对象的类型

  1. // 函数声明  
  2. int GetType();  
  3.      

CADOParameter::GetParameter 
GetParameter函数返回一个_Parameter对象指针

  1. // 函数声明   
  2. _ParameterPtr GetParameter();   
  3.      

CADOCommand 类 
CADOCommand类封装了一个套_CommandPtr智能指针相关的函数

CADOCommand::CADOCommand 
创建一个CADOCommand对象

  1. // 函数声明   
  2. CADOCommand(CADODatabase* pAdoDatabase, CString strCommandText = _T(""),  
  3.                                   int nCommandType = typeCmdStoredProc);    
  4.      

参数
CADODatabase* pAdoDatabase - 一个CADODatabase对象指针
CString strCommandText = _T("") - 一个可选的字符串,指出CADOCcommand对象的标题
int nCommandType = typeCmdStoredProc - 一个可选的整形,指出CADOCommand对象的类型。可取一下值中的一个:
CADOCommand::typeCmdText - 检测CommandText作为一个定义的命令文本或者存储过程来调用
CADOCommand::typeCmdTable - 检测CommandText作为一个表名称,使用一个内部生成的SQL查询返回所有的行
CADOCommand::typeCmdTableDirect - 检测CommandText作为一个返回全部行的表名称
CADOCommand::typeCmdStoredProc - 默认值,检测CommandText作为存储过程
CADOCommand::typeCmdUnknown - 指出CommandText内容的类型是未知的
CADOCommand::typeCmdFile - 检测CommandText作为一个不断被储存记录集的文件名。只能在Recordset.Open或者Requery使用
查看示例

CADOCommand::AddParameter 
AddParameter 函数

  1. // 函数声明   
  2. BOOL AddParameter(CADOParameter* pAdoParameter);  
  3. BOOL AddParameter(CString strName, int nType, int nDirection,  
  4.                           long lSize, int nValue);  
  5. BOOL AddParameter(CString strName, int nType, int nDirection,  
  6.                           long lSize, long lValue);  
  7. BOOL AddParameter(CString strName, int nType, int nDirection,  
  8.                           long lSize, double dblValue, int nPrecision = 0,  
  9.                           int nScale = 0);  
  10. BOOL AddParameter(CString strName, int nType, int nDirection,  
  11.                           long lSize, CString strValue);  
  12. BOOL AddParameter(CString strName, int nType, int nDirection,  
  13.                           long lSize, COleDateTime time);  
  14. BOOL AddParameter(CString strName, int nType, int nDirection,  
  15.                           long lSize, _variant_t vtValue, int nPrecision = 0,  
  16.                           int nScale = 0);  
  17.      

参数
CADOParameter* pAdoParameter - 一个指向CADOParameter对象的指针
CString strName - 一个字符串,指出参数的名称
int nType - 一个整形值,指出CADOParameter对象的数据类型,可以取在CADORecordset::GetFieldInfo中指定的一个值。假如您使用CADORecordset::typeNumeric或者CADORecordset::typeDecimal,您必须定义了精度和刻度值。
int nDirection - 一个整形变量,指出CADOParameter对象的用途,可以取在CADOParameter::CADOParameter中指定的一个值 
long lSize - 一个长整形,指出参数值的最大的字节或者字符长度
int nValue - 一个包含参数值的整形值
long lValue - 一个包含参数值的长整形值
double dblValue - 一个包含参数值的双精度浮点值
int nPrecision - 一个包含参数值的精度的整形值
int nScale - 一个包含参数值的比例的整形值
CString strValue - 一个包含参数值的字符串
COleDateTime time - 一个包含参数值的时间值
_variant_t vtValue - 一个包含参数值的变体变量值
返回值
执行成功返回TRUE

查看示例

CADOCommand::SetText 
SetText函数设置CADOCommand对象的命令文本

  1. // 函数声明   
  2. void SetText(CString strCommandText);   
  3.      

参数
CString strCommandText - 一个字符串,指出命令的文本

CADOCommand::GetText 
GetText函数返回CADOCommand对象的命令文本

  1. // 函数声明  
  2. CString GetText();     
  3.      

CADOCommand::SetType 
SetType函数设置CADOCommand对象的类型

  1. // 函数声明  
  2. void SetType(int nCommandType);    
  3.      

参数
int nCommandType - 一个整形值,指出命令的类型

CADOCommand::GetType 
GetType函数返回CADOCommand对象的类型

  1. // 函数声明  
  2. int GetType();   
  3.      

CADOCommand::GetCommand 
GetCommand函数返回一个Command指针

  1. // 函数声明  
  2. _CommandPtr GetCommand();    
  3.      

CADOCommand::Execute 
Execute 函数执行命令的文本

  1. // 函数声明   
  2. BOOL Execute();  
  3.      

返回值
执行成功返回TRUE

CADOCommand::GetRecordsAffected 
GetRecordsAffected函数返回最后个命令执行后影响的记录个数

  1. // 函数声明  
  2. int GetRecordsAffected();    
  3.      

示例02

  1. // 程序例子  
  2. //SQL SCRIPT...  
  3. Create Procedure sp_OutputTest  
  4. @IN1 int,  
  5. @OutInt int Output,  
  6. @OutChar varchar(20) Output  
  7. As     
  8.     SELECT      
  9.         @OutChar = 'Hello World'  
  10.     SELECT      
  11.         @OutInt = 10 * @IN1  
  12.     return (90)  
  13. GO  
  14. //Visual C++ Code...  
  15. CADOParameter pParamRetVal(CADORecordset::typeInteger, sizeof(int),  
  16.                            CADOParameter::paramReturnValue);  
  17. CADOParameter pParamIn(CADORecordset::typeInteger, sizeof(int));  
  18. CADOParameter pParamOutInt(CADORecordset::typeInteger, sizeof(int),  
  19.                            CADOParameter::paramOutput);  
  20. CADOParameter pParamOutChar(CADORecordset::typeChar, sizeof(char) * 20,  
  21.                             CADOParameter::paramOutput);  
  22. pParamIn.SetValue(2);  
  23. CADOCommand pCmd(&pDb, "sp_OutputTest");  
  24. pCmd.AddParameter(&pParamRetVal);  
  25. pCmd.AddParameter(&pParamIn);  
  26. pCmd.AddParameter(&pParamOutInt);  
  27. pCmd.AddParameter(&pParamOutChar);  
  28. CADORecordset* prs = new CADORecordset(pDb);  
  29. if(pRs->Execute(&pCmd))  
  30. {  
  31.     int nVal = 0;  
  32.     int nRetVal = 0;  
  33.     CString str = _T("");  
  34.     pParamRetVal.GetValue(nRetVal);  
  35.     pParamOutInt.GetValue(nVal);  
  36.     pParamOutChar.GetValue(str);  
  37. }  
  38. delete pRS;   
  39.      

CJectEngine类 
CJectEngine类封装了一套_RecordsetPtr智能指针相关的函数

CJetEngine::CompactDatabase 
压缩一个Access 数据库

  1. // 函数声明   
  2. BOOL CompactDatabase(CString strDatabaseSource, CString strDatabaseDestination);  
  3.      

参数
CString strDatabaseSource - 一个源数据库连接字符串
CString strDatabaseDestination - 一个目的数据库连接字符串
注:
连接字符串必须是这样的:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/the Database Path"
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CString strCompactedDBConnection;  
  3. CString strConnection;  
  4. CString strCompactedDBPath = _T("C://My Projects//Database//SampleDB.tmp");  
  5. CString strDatabasePath = _T("C://My Projects//Database//SampleDB.mdb");  
  6. strCompactedDBConnection.Format("Provider=Microsoft.Jet.OLEDB."   
  7.         "4.0;Data Source=%s", strCompactedDBPath.GetBuffer(0));  
  8. strConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",   
  9.                                          strDatabasePath.GetBuffer(0));  
  10. if(CJetEngine::CCompactDatabase(strConnection, strCompactedDBConnection))  
  11. {  
  12.     ::CopyFile(strCompactedDBPath.GetBuffer(0),   
  13.           strDatabasePath.GetBuffer(0), FALSE);  
  14. }  
  15.      

CADOException类 
CADOException类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因

CADOException::CADOException 
创建一个CADOException对象

  1. // 函数声明  
  2. CADOExcpetion();  
  3.      

检索ADO错误信息
构建一个CADOException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来检索关于这个错误的信息
例子

  1. // 程序例子  
  2. try  
  3. {  
  4.     if(pDb.Open(_T("Provider=Microsoft.JET.OLEDB.4.0;")   
  5.                 _T("Data source = c://vc projects//ado//dbTest.mdb;")))  
  6.     {  
  7.         CADORecordset pRS(&pDb);  
  8.         if(pRS.Open("tbltest", CADORecordset::openTable))  
  9.         {  
  10.             pRS.SetSort("Descriptions");  
  11.             .  
  12.             .  
  13.             .  
  14.         }  
  15.         pRS.Close();  
  16.     }  
  17. }  
  18. catch(CADOException &e)  
  19. {  
  20.     AfxMessageBox(e.GetErrorMessage());  
  21. }  
  22.        

CADOException::GetErrorMessage 

  1. // 函数声明  
  2. CString GetErrorMessage() const;     
  3.      

返回值
返回错误的描述
查看示例

CADOException::GetError 

  1. // 函数声明  
  2. long GetError();  
  3.      

返回值
返回错误代码

CADOException::SetError 

  1. // 函数声明   
  2. void SetError(long lErrorCode = 0);  
  3. void SetErrorMessage(LPCSTR lpstrError = _T(""));    
  4.      

参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串

COLEDBDataLink类 
COLEDBDataLink 类是一个工具类,用来创建和编辑数据链

COLEDBDataLink::COLEDBDataLink 
创建一个COLEDBDataLink 对象

  1. // 函数声明     
  2. COLEDBDataLink();  
  3.      

COLEDBDataLink::New 

  1. // 函数声明  
  2. CString New(HWND hWnd = NULL);  
  3. throw(COLEDBException);     
  4.      

参数
HWND hWnd = NULL - 父窗口句柄
返回值
返回一个字符串告之相应的连接字符串创建的连接
查看示例

COLEDBDataLink::Edit 

  1. // 函数声明  
  2. void Edit(LPCSTR lpstrConnectionString, HWND hWnd);  
  3. throw(COLEDBException);     
  4.      

参数
LPCSTR lpstrConnectionString 
HWND hWnd - 父窗口句柄
例子

  1. // 函数声明  
  2. //程序例子  
  3. COLEDBDataLink dtlnk;  
  4. try  
  5. {  
  6.     dtlnk.Edit("Provider=Microsoft.JET.OLEDB.4.0;Data source"   
  7.                " = c://vc projects//ado//dbTest.mdb;"this->m_hWnd);  
  8. }  
  9. catch(COLEDBException &e)  
  10. {  
  11.     AfxMessageBox(e.GetErrorMessage());  
  12. }  
  13.      

COLEDBException类 
COLEDBException 类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因

OLEDBException::COLEDBException 
创建一个COLEDBException对象

  1. // 函数声明  
  2. COLEDBException();  
  3.      

检索ODEDB错误信息
构建一个COLEDBException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来接收关于这个错误的信息
例子

  1. // 程序例子  
  2. CADODatabase pDb;  
  3. COLEDBDataLink dtlnk;  
  4. try  
  5. {  
  6.     pDb.Open(dtlnk.New(this->m_hWnd));  
  7. }  
  8. catch(COLEDBException &e)  
  9. {  
  10.     AfxMessageBox(e.GetErrorMessage());  
  11. }  
  12.      

OLEDBException::GetErrorMessage 

  1. // 函数声明  
  2. CString GetErrorMessage() const;    
  3.      

返回值
返回错误的描述
查看示例

OLEDBException::GetError 

  1. // 函数声明  
  2. long GetError();  
  3.      

返回值
返回错误代码

OLEDBException::SetError 

  1. // 函数声明   
  2. void SetError(long lErrorCode = 0);  
  3. void SetErrorMessage(LPCSTR lpstrError = _T(""));    
  4.      

参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串

常见问题

如何把CADORecordset与微软的DataGrid控件进行绑定;

第一:您需要添加微软的DataGrid控件到您的程序中
第二:用CADORecordset::GetRecordset函数申请来给数据控件类的SetRefDataSource 函数使用

  1. // 程序例子  
  2. if(m_pRs.Open("tblTest", CADORecordset::openTable))  
  3. {  
  4.     //m_datagridctrl is the CDataGrid Class...  
  5.     m_datagridctrl.SetCaption("Clients");  
  6.     m_datagridctrl.SetRefDataSource(NULL);  
  7.     m_datagridctrl.SetRefDataSource((LPUNKNOWN)m_pRs.GetRecordset());  
  8.     m_datagridctrl.Refresh();  
  9. }    
  10.      

 

涉及到如何添加一个数据控件(微软DataGrid控件)到您的工程中,请参阅拉希德Thadha的这篇文章

 

 

我该如何重新排序记录集?

这个问题很简单,您使用_RecordsetPtr的部分函数和属性。使用CADORecordset::GetRecordset(),您会获得一个_RecordsetPtr指针,您可以使用它来设置Sort属性
注:您不必使用_RecordsetPtr::Refresh()

 

现在:您就使用CADORecordset::SetSort()函数。

 

 

致命错误C1010:意外的文件尾在查找编译头指令

为了解决这个常见问题,您需要使用自动使用编译头。选择工程/设置 (或者 ALT+F7键),在工程设置对话框,选择C/C++书签页,然后在组合框中选择预编译头一项,并选择自动使用编译头选项。

 

在SQL Server中您如何获取您的存储过程返回码
您必须使用CADOParameter 类,CADOParameter::paramReturnValue获取转存过程的返回值,它总是必定是一个整形,必须在参数列表的第一个位置。假如您不使用参数来输入或者输出,那么您只需要使用这个参数
查看示例

 

 

我尝试使用CADOCommand 类并能进入UUID 字段,但迄今为止我没有成功过。您能抽空为此写个例子吗?

您说的是uniqueidentifier 类型的字段吗?好的,这个问题如下:
首先您更新表使用SQL语句的NEWID()。这个命令将为你做一个独一无二的字符串如"{B6B83A8C-F92C-4FA7-9641-631143E6056C}"。想要插入数据到字段的类型中,您必须使用类似的字符串。最后,我们可以说:您应该使用带有GUID格式字符串参数类型。它必须是唯一的。是不是有很多条件!!!
不过,我写了一个示例,在下面的示例中,您会看到我使用了UUID作为字符串参数。您还看见转存过程的参数是uniqueidentifier类型的。

  1. // 程序例子  
  2. //Visual C++ Sample  
  3. CADOParameter pParamRet(CADORecordset::typeInteger, sizeof(int),  
  4.                         CADOParameter::paramReturnValue);  
  5. CADOParameter pParamInChar(CADORecordset::typeChar, sizeof(char) * 40,  
  6.                            CADOParameter::paramInput);  
  7. CADOParameter pParamID(CADORecordset::typeInteger, sizeof(int));  
  8. CString strUUID = CString("{B6B83A8C-F92C-4FA7-9641-631143E6056C}");  
  9. pParamInChar.SetValue(strUUID);  
  10. pParamID.SetValue(1);  
  11. CADOCommand pCmd(&m_pDB, "sp_UUIDTest");  
  12. pCmd.AddParameter(&pParamRet);  
  13. pCmd.AddParameter(&pParamInChar);  
  14. pCmd.AddParameter(&pParamID);  
  15. if(pRs.Execute(&pCmd))  
  16. {  
  17.     int nVal = 0;  
  18.     pParamRet.GetValue(nVal);  
  19. }     
  20.        

  1. // SQL SCRIPT  
  2. Create Procedure sp_UUIDTest  
  3. @UUID uniqueidentifier = NULL,  
  4. @ID integer  
  5. AS  
  6.     UPDATE  
  7.         systable01  
  8.     SET  
  9.         UUID = @UUID  
  10.     WHERE  
  11.         sysfield00 = @ID  
  12.       
  13.     if @@Error = 0  
  14.         return 1  
  15.     else  
  16.         return 99  
  17. GO    
  18.         

 

 

 

 

ADO与ADOX在一起

我每天收到几个邮件问我如何是使用ADO与ADOX类一起工作。答案是,现在现在从ADO2.10版本后,您可以使用两种类型类一起工作。您必须包含每个类头文件和CPP文件,然后在该项目中包含头文件
注意
证实包含头文件必须按如下顺序是很重要的,首先是ADOX类头文件,然后才是ADO类头文件。

  1. // 包含头文件  
  2. #include <adox.h>  
  3. #include <ado2.h>    
  4.      

 

 

 

Carlos A. Antollini.

更新

25 Apr 2001 - 1.0版本发布

20 May 2001 - 1.1版本
添加了如下函数
AbsolutePage, GetPageCount, PageSize, AbsolutePosition, GetFieldInfo, GetChunk, GetString.

29-Jun-2001 - 1.2版本
添加了如下函数 
AddNew, Edit, Delete, Update, CancelUpdate, SetFieldValue, Find, FindFirst, FindNext, SetBookmark, GetBookmark.

29-Sept-2001 - 1.25版本
添加对SQL Server2000的支持
修正Robert Pittenger报告的空字段bug

10-Oct-2001 - 1.30版本
修正ugGiles Forster 和 Rainer Mangold 
报告的SetFieldValue 中空字段bug
添加数据枚举类型

05-Nov-2001 - 版本1.37
CADORecodset更新能添加绑定到DataGrid的功能
添加GetLastErrorString 函数和改变GetLastError函数返回的数据类型
添加Clone和SetFilter函数(应Marcel Stoica的要求)

15-Jan-2002 - 1.40版本
添加Giles Forster写的GetChunk和AppendChunk函数

15-Feb-2002 - 1.45版本
修正J. C. Martinez Gal?n 报告的十进制字段的bug
添加XML支持

04-Apr-2002 - 2.00版本
添加CADOParameter 和 CADOCommand类

14-May-2002 - 2.01版本
在CADORecordset::GetFieldValue和CADORecordset::SetFieldValue添加COleCurrency和bool

25-July-2002 - 2.04版本
添加CADODatabase::GetRecordsAffcetd, CADOCommand::GetRecordsAffected, CADOCommand::Execute, CADOParameter::SetPrecision, CADOParamater::SetScale和修正CADOCommand::AddParameter中的bug

2-July-2003 - 2.10 版本
添加与ADOX类一起使用的时候兼容性(应很多人的要求)
添加Added CADODatabase::SetConnectionMode, CADORecordset::OpenSchema
添加CJetEngine::CCompactDatabase

2-October-2003 - 2.11版本
Jan Stocker修复在CADOCommand中的内存泄露

08-August-2004 - 创建了COLEDBDataLink 1.01版本
创建COLEDBDataLink 类,并添加到了ADO类中

10-Februry-2005 - 2.15版本
添加了CADOException 类

 

特别感谢
这些类受到了很多用户的建议,非常感谢您们的合作
* Rainer Mangold
* Christian Graus
* Mike Osbahr
* Francis BONTHOUX
* Spiros Prantalos
* Robert Pittenger
* Giles Forster
* Rob Sandhu
* Marcel Stoica
* Daniel Berman
* Jan Stocker
* And tons of people requesting for new versions.

许可
这篇文章,以及任何相关源代码和文件,授权见The Microsoft Public License (Ms-PL)

关于作者
Carlos Antollini 是一个软件工程师,致力于面向对象,Visual C++, MFC, COM, ATL, ADO,互联网技术和商业智能工作
Carlos来自阿根廷,住在劳德代尔堡,佛罗里达州,为花旗银行工作多年。然后他开始了他的事业。
Carlos是"http://www.piFive.com">piFive["_blank" title="piFive" href="http://www.piFive.com">^]创作者,一家商业智能分析平台软件,它涉及到未来"http://www.latinsys.com">latinsys["_blank" title="latinsys" href="http://www.latinsys.com">^],他的合伙人企业
目前他在花旗集团分享项目管理和BI热情
工作:设计师
公司名称:花旗集团 
国籍:阿根廷

 

A set of ADO classes - version 2.20 - CodeProject

 

为了方便大家下载源代码 ,我的资源中也放了一份拷贝。

英语挺烂的,硬着头皮算是翻译下来了,第一次做网页排版,有什么错误请大家回帖指出来,我好方便修改。

概述

概述

 

 

我创建这些类使得我们更容易使用ADO来做我们的工作。比如我创建了CADODatabse和CADORecordset类

 

 

CADODatabse类 
CADODatabse类封装了一套_ConnectionPtr智能指针相关的函数

CADODatabase::CADODatabase 
创建一个CADODatabase对象

  1. // 函数声明  
  2. CADODatabase();     
  3.      

CADODatabase::Open 
Open函数打开一个数据库连接

  1. // 函数声明  
  2. BOOL Open(LPCTSTR lpstrConnection = _T(""));  
  3. throw(CADOException);     
  4.      

参数
LPCTSTR lpstrConnection 连接字符串
查看示例 
注:该类有个函数SetConnectionString,您可以通过这个函数插入连接字符串。在这种情况下您可以执行如下操作:

  1. // 程序例子  
  2. //Sample with Connection string for SQL Server  
  3. CADODatabase* pAdoDb = new CADODatabase();  
  4. CString strConnection = _T("");  
  5. strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;"  
  6.                    "Trusted_Connection=Yes;"  
  7.                    "Data Source=Access Sql Server;catalog=sampledb");  
  8. pAdoDb->SetConnectionString(strConnection);  
  9. if(pAdoDb->Open())  
  10.   DoSomething();  
  11. .  
  12. .  
  13. .  
  14. //Sample with Connection String for Access database  
  15. CADODatabase* pAdoDb = new CADODatabase();  
  16. CString strConnection = _T("");  
  17. strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;"  
  18.               "Data Source=C://VCProjects//ADO//Test//dbTest.mdb");  
  19. pAdoDb->SetConnectionString(strConnection);  
  20. if(pAdoDb->Open())  
  21. {  
  22.   DoSomething();  
  23.   .  
  24.   .  
  25.   .  
  26.   pAdoDb->Close();  
  27. }  
  28. delete pAdoDb;  
  29.      

CADODatabase::Execute 
Excute函数在一个打开的数据库连接中执行一个SQL语句

  1. // 函数声明   
  2. BOOL Execute(LPCTSTR lpstrExec);  
  3. throw(CADOException);    
  4.      

参数
LPCTSTR lpstrExec - 一个包含需要执行的SQL语句字符串指针

  1. // 程序例子  
  2. CADODatabase* pAdoDb = new CADODatabase();  
  3. CString strConnection = _T("");  
  4. strConnection = _T("Provider=MSDASQL;"  
  5.                    "PersistSecurityInfo=False;"  
  6.                    "Trusted_Connection=Yes"  
  7.                 "Data Source=Access Sql Server;catalog=sampledb");  
  8. if(pAdoDb->Open(strConnection))  
  9.  pAdoDb->Execute("Delete From tblClients Where Cheker = 3");  
  10.      

返回值
假如执行成功,这个函数返回TRUE

CADODatabase::GetRecordsAffected 
GetRecordsAffected返回上一次SQL命令执行后影响的记录个数

  1. // 函数声明  
  2. int GetRecordsAffected();     
  3.      

CADODatabase::GetActiveConnection 
GetActiveConnection返回活动连接(当前的连接)

  1. // 函数声明  
  2. _ConnectionPtr GetActiveConnection();     
  3.      

CADODatabase::GetRecordCount 
GetRecordCount返回一个查询中受影响的记录数

  1. // 函数声明  
  2. DWORD GetRecordCount(_RecordsetPtr m_pRs);     
  3.      

参数
_RecorsetPtr m_Prs -要查询的记录集

CADODatabase::BeginTransaction 
调用此函数来初始化一个事务。您调用BeginTransaction以后,当您提交事务后更新才使得您的数据使之生效。

  1. // 函数声明  
  2. long BeginTransaction();     
  3.      

CADODatabase::CommitTransaction 
调用CommitTransaction函数提交事务,比如,保存一组编辑和一个或者多个数据库更新

  1. // 函数声明  
  2. long CommitTransaction();     
  3.      

CADODatabase::RollbackTransaction 
调用RollbackTransaction函数结束当前事务和恢复在事务开始前的所有数据库状况

  1. // 函数声明   
  2. long RollbackTransaction();    
  3.      

CADODatabase::IsOpen 
IsOpen函数返回数据库连接的状态

  1. // 函数声明  
  2. BOOL IsOpen();     
  3.      

返回值
假如连接的数据库是打开的,这个函数返回TRUE

CADODatabase::Close 
Close函数关闭数据库连接

  1. // 函数声明  
  2. void Close();     
  3.      

CADODatabase::SetConnectionString 
使用SetConnectionString您可以插入一个连接字符串

  1. // 函数声明  
  2. void SetConnectionString(LPCTSTR lpstrConnection);     
  3.      

参数
LPCTSTR lpstrConnection -一个用于打开数据库的连接字符串
见CADODatabase::Open();

CADODatabase::GetConnectionString 
GetConnectionString函数返回用来连接数据库的连接字符串

  1. // 函数声明   
  2. CString GetConnectionString();    
  3.      

CADODatabase::SetConnectionMode 
SetConnectionMode函数设置连接模式

  1. // 函数声明  
  2. void SetConnectionMode(cadoConnectModeEnum nMode);     
  3.      

参数
cadoConnectModeEnum nMode-一个变量,它定义要使用的连接方式。它可以是下列之一:

  • CADODatabase::connectModeUnknown
  • CADODatabase::connectModeRead
  • CADODatabase::connectModeWrite
  • CADODatabase::connectModeReadWrite
  • CADODatabase::connectModeShareDenyRead
  • CADODatabase::connectModeShareDenyWrite
  • CADODatabase::connectModeShareExclusive
  • CADODatabase::connectModeShareDenyNone

CADODatabase::GetLastError 
GetLastError函数返回最后一个错误代码

  1. // 函数声明   
  2. DWORD GetLastError();    
  3.      

CADODatabase::GetLastErrorString 
GetLastErrorString返回最后个错误的字符串

  1. // 函数声明  
  2. CString GetLastErrorString();  
  3.      

CADORecordset 类 
CADORecordset 类封装了一套与_RecordsetPtr智能指针相关的函数

CADORecordset::CADORecordset 
创建一个CADORecordset对象

  1. // 函数声明   
  2. CADODatabase();  
  3. CADORecordset(CADODatabase* pAdoDatabase);    
  4.      

参数
CADODatabase* pAdoDatabase - 一个CADODatabase对象指针

CADORecordset::Open 
Open函数打开一个记录集

  1. // 函数声明  
  2. BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""),   
  3.                      int nOption = CADORecordset::openUnknown);  
  4. BOOL Open(LPCTSTR lpstrExec = _T(""),   
  5.                      int nOption = CADORecordset::openUnknown);  
  6.      

参数
_ConnectionPtr mpdb -一个连接指针
LPCTSTR lpstrExec - 一个字符串指针,包含一个SQL SELECT语句
int nOption - 一个整形数,它定义访问模式。这些值如下

  • CADORecordset::openUnknown
  • CADORecordset::openQuery
  • CADORecordset::openTable
  • CADORecordset::openStoredProc


返回值
假如执行成功返回TRUE
查看示例

CADORecordset::Execute 
Execute函数打开一个记录集

  1. // 函数声明  
  2. BOOL Execute(CADOCommand* pCommand);  
  3. throw(CADOException);     
  4.      

参数
CADOCommand* pCommand - 一个CADOCommand指针
返回值
假如执行成功返回TRUE
查看示例

CADORecordset::GetQuery; 
GetQuery返回包含SELECT关键字的SQL命令字符串

  1. // 函数声明  
  2. CString GetQuery();  
  3.      

 

CADORecordset::SetQuery 

  1. // 函数声明  
  2. void SetQuery(LPCSTR strQuery);  
  3.      

参数
LPCTSTR strQuery - 一个字符串指针,包含一个SQL SELECT语句

CADORecordset::RecordBinding 

  1. // 函数声明  
  2. BOOL RecordBinding(CADORecordBinding pAdoRecordBinding);     
  3.      

参数
CADORecordBinding pAdoRecordBinding

CADORecordset::GetRecordCount 
GetRecordCount 函数返回可以在记录集中访问的记录数

  1. // 函数声明  
  2. DWORD GetRecordCount();     
  3.      

查看示例

CADORecordset::IsOpen 
IsOpen 测试记录集是否打开

  1. // 函数声明  
  2. BOOL IsOpen();     
  3.      

返回值
假如这个记录集没有关闭,这个函数返回TRUE

CADORecordset::Close 
Close函数关闭记录集

  1. // 函数声明  
  2. void Close();     
  3.      

查看示例

CADORecordset::GetFieldCount 
GetRecordCount 函数返回记录集中的字段数目

  1. // 函数声明  
  2. long GetFieldCount();     
  3.      

CADORecordset::GetFieldValue 

  1. // 函数声明  
  2. BOOL GetFieldValue(LPCTSTR lpFieldName, int nValue);  
  3. BOOL GetFieldValue(int nIndex, int nValue);  
  4. BOOL GetFieldValue(LPCTSTR lpFieldName, long lValue);  
  5. BOOL GetFieldValue(int nIndex, long lValue);  
  6. BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);  
  7. BOOL GetFieldValue(int nIndex, unsigned long ulValue);  
  8. BOOL GetFieldValue(LPCTSTR lpFieldName, double dbValue);  
  9. BOOL GetFieldValue(int nIndex, double dbValue);  
  10. BOOL GetFieldValue(LPCTSTR lpFieldName, CString strValue,   
  11.                          CString strDateFormat = _T(""));  
  12. BOOL GetFieldValue(int nIndex, CString strValue,   
  13.                          CString strDateFormat = _T(""));  
  14. BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime time);  
  15. BOOL GetFieldValue(int nIndex, COleDateTime time);  
  16. BOOL GetFieldValue(LPCTSTR lpFieldName, bool bValue);  
  17. BOOL GetFieldValue(int nIndex, bool bValue);  
  18. BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);  
  19. BOOL GetFieldValue(int nIndex, COleCurrency cyValue);  
  20. throw(CADOException);     
  21.      

参数
LPCTSTR lpFieldName -一个包含有字段名称的字符串指针
int nIndex -一个在记录集的所有字段集中以零为基准,需要查看的索引
double dbValue - 一个将要储存字段值的引用变量
long lValue - 一个将要储存字段值的引用变量
unsigned long ulValue - 一个将要储存字段值的引用变量
int nValue - 一个将要储存字段值的引用变量
CString strValue- 一个将要储存字段值的引用变量
CString strDateFormat 一个时间格式字符串,类似strftime格式的字符,他们普遍是
%a - 平日名称缩写 
%A - 全平日名称 
%b - 月份名称 
%B - 月份的全称
%c - 日期和时间是用本地时间表示
%d - 十进制表示月的天(01-31)
%H - 24时时间格式(00-23)
%I - 12时时间格式(01-12)
%j - 十进制表示年的天(001-366)
%m - 十进制表示的月(01-12)
%M - 十进制表示的分(00-59)
%p - A.M./P.M表示当前12时时间格式的时间
%S - 十进制表示的秒(00-59)
%U - 十进制表示年的周,星期日表示一周的第一天(00-53)
%w - 十进制表示的周几(0-6,星期天是0)
%W - 十进制表示年的周,星期一表示一周的第一天(00-53)
%x - 本地时间的日期
%X - 本地时间的时间
%y - 十进制的不带一世纪的年(00-99)
%Y - 十进制带一世纪的年
COleDateTime time - 一个将要储存字段值的引用变量
bool bValue- 一个将要储存字段值的引用变量
COleCurrency cyValue - 一个将要储存字段值的引用变量

查看示例

CADORecordset::IsFieldNull 
IsFieldNull函数测试字段数据是否为空

  1. // 函数声明  
  2. BOOL IsFieldNull(LPCTSTR lpFieldName);  
  3. BOOL IsFieldNull(int nIndex);  
  4. throw(CADOException);     
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据为空,该函数返回TRUE

 

CADORecordset::IsFieldEmpty 
IsFieldEmpty函数测试字段数据是否为空

  1. // 函数声明   
  2. BOOL IsFieldEmpty(LPCTSTR lpFieldName);  
  3. BOOL IsFieldEmpty(int nIndex);  
  4. throw(CADOException);    
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据位空该函数返回TRUE

CADORecordset::IsEof 

  1. // 函数声明  
  2. BOOL IsEof();     
  3.      

返回值
假如当前位置没有包含任何记录,该函数返回TRUE
查看示例

CADORecordset::IsBof 

  1. // 函数声明  
  2. BOOL IsBof();   
  3.      

返回值
假如当前位置是记录的底部,该函数返回TRUE

CADORecordset::MoveFirst
CADORecordset::MoveNext
CADORecordset::MovePrevious
CADORecordset::MoveLast
 
这些函数使得第一个/下一个/上一个/或者最后个记录集中的记录作为当前记录

  1. // 函数声明   
  2. void MoveFirst();  
  3. void MoveNext();  
  4. void MovePrevious();  
  5. void MoveLast();    
  6.      

查看示例

CADORecordset::GetAbsolutePage
CADORecordset::SetAbsolutePage
 
表示当前记录在那个页

  1. // 函数声明   
  2. long GetAbsolutePage();  
  3. void SetAbsolutePage(int nPage);  
  4.      

参数
int nPage - 页基数是1
查看示例

CADORecordset::GetPageCount 
GetPageCount返回在一个记录集中页的数量

  1. // 函数声明  
  2. long GetPageCount();     
  3.      

查看示例

CADORecordset::GetPageSize
CADORecordset::SetPageSize
 
指示每页有多少记录

  1. // 函数声明  
  2. long GetPageSize();  
  3. void SetPageSize(int nSize);  
  4.      

参数
int nSize - 设置每页记录的个数
例子

  1. // 程序例子  
  2. CADORecordset* pRs = new CADORecordset(pDb);  
  3. if(pRs->Open("MyBigTable", CADORecordset::openTable))  
  4. {  
  5.     pRs->SetPageSize(5);  
  6.     for(register int nPageIndex = 1; nPageIndex <= pRs->GetPageCount();   
  7.         nPageIndex++)  
  8.     {  
  9.         pRs->SetAbsolutePage(nPageIndex);  
  10.         for(register int nRecNumber = 0; nRecNumber < pRs->GetPageSize();   
  11.             nRecNumber++)  
  12.         {  
  13.             long lVal;  
  14.             pRs->GetFieldValue("ID", lVal);  
  15.             pRs->MoveNext();  
  16.             if(pRs->IsEof())  
  17.                 break;  
  18.         }  
  19.     }  
  20.     pRs->Close();  
  21. }  
  22. delete pRs;  
  23.      

CADORecordset::GetAbsolutePosition
CADORecordset::SetAbsolutePosition
 
表示当前记录在记录集中的位置

  1. // 函数声明  
  2. long GetAbsolutePosition();  
  3. void SetAbsolutePosition(int nPosition);  
  4.      

参数
int nPosition - 移动到的记录集位置
GetAbsolutePosition() 会返回记录的位置或者下面中的一个值

CADORecordset::GetFieldInfo 
GetFieldInfo返回一个字段的属性

  1. // 函数声明  
  2. BOOL GetFieldInfo(LPCTSTR lpFieldName, CAdoFieldInfo* fldInfo);  
  3. BOOL GetFieldInfo(int nIndex, CAdoFieldInfo* fldInfo);    
  4.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CAdoFieldInfo* fldInfo - 一个返回的字段属性结构体

  1. // 结构体声明  
  2. struct CADOFieldInfo  
  3. {  
  4.     char m_strName[30];  
  5.     short m_nType;  
  6.     long m_lSize;  
  7.     long m_lDefinedSize;  
  8.     long m_lAttributes;  
  9.     short m_nOrdinalPosition;  
  10.     BOOL m_bRequired;  
  11.     BOOL m_bAllowZeroLength;  
  12.     long m_lCollatingOrder;  
  13. };    
  14.      

CADOFieldInfo类的成员变量m_nType可取如下值中的一个:

  • CADORecordset::typeEmpty
  • CADORecordset::typeTinyInt
  • CADORecordset::typeSmallInt
  • CADORecordset::typeInteger
  • CADORecordset::typeBigInt
  • CADORecordset::typeUnsignedTinyInt
  • CADORecordset::typeUnsignedSmallInt
  • CADORecordset::typeUnsignedInt
  • CADORecordset::typeUnsignedBigInt
  • CADORecordset::typeSingle
  • CADORecordset::typeDouble
  • CADORecordset::typeCurrency
  • CADORecordset::typeDecimal
  • CADORecordset::typeNumeric
  • CADORecordset::typeBoolean
  • CADORecordset::typeError
  • CADORecordset::typeUserDefined
  • CADORecordset::typeVariant
  • CADORecordset::typeIDispatch
  • CADORecordset::typeIUnknown
  • CADORecordset::typeGUID
  • CADORecordset::typeDate
  • CADORecordset::typeDBDate
  • CADORecordset::typeDBTime
  • CADORecordset::typeDBTimeStamp
  • CADORecordset::typeBSTR
  • CADORecordset::typeChar
  • CADORecordset::typeVarChar
  • CADORecordset::typeLongVarChar
  • CADORecordset::typeWChar
  • CADORecordset::typeVarWChar
  • CADORecordset::typeLongVarWChar
  • CADORecordset::typeBinary
  • CADORecordset::typeVarBinary
  • CADORecordset::typeLongVarBinary
  • CADORecordset::typeChapter
  • CADORecordset::typeFileTime
  • CADORecordset::typePropVariant
  • CADORecordset::typeVarNumeric
  • CADORecordset::typeArray

 

例子

  1. // 程序例子  
  2. if(prs->Open("Clients", CADORecordset::openTable))  
  3. {  
  4.     CADOFieldInfo pInfo;  
  5.     prs->GetFieldInfo("Description", &pInfo);  
  6.     if(pInfo.m_nType == CADORecordset::typeVarChar)  
  7.         AfxMessageBox("The type Description Field Is VarChar");  
  8. }  
  9. if(prs->Open("TestTable", CADORecordset::openTable))  
  10. {  
  11.     CADOFieldInfo* fInfo = new CADOFieldInfo;  
  12.     prs.GetFieldInfo(0, fInfo);  
  13.     CString strFieldName = fInfo->m_strName;  
  14.     prs->Close();  
  15. }  
  16.      

返回值
假如执行成功返回TRUE

CADORecordset::GetChunk 
该函数返回所有的,或者部分大文本,二进制数据字段内容

  1. // 函数声明   
  2. BOOL GetChunk(LPCTSTR lpFieldName, CString& strValue);  
  3. BOOL GetChunk(int nIndex, CString& strValue);  
  4. BOOL GetChunk(LPCTSTR lpFieldName, LPVOID pData);  
  5. BOOL GetChunk(int nIndex, LPVOID pData);   
  6.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CString& strValue 一个包含返回数据的字符串指针
LPVOID pData - 一个包含有返回数据的指针
返回值
假如执行成功返回TRUE
查看示例

CADORecordset::AppendChunk 
该函数追加数据到一个大的文本或者二进制数据到字段中

  1. // 函数声明  
  2. BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);  
  3. BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);   
  4. throw(CADOException);    
  5.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
LPVOID lpData - 一个包含要添加数据到字段的指针
UINT nBytes - 一个无符号整形,指示要插入的数据大小
返回值
假如执行成功返回TRUE
例子

  1. // 程序例子  
  2. //Sample of AppendChunck  
  3. prs.AddNew();  
  4. prs.SetFieldValue("ID", 5);  
  5. prs.SetFieldValue("Description""Client 05");  
  6. prs.SetFieldValue("Checker", 1);  
  7. prs.AppendChunk("Document",   
  8.     "This Document is the story of Bob and his Friends...", 37);  
  9. prs.Update();  
  10. //Sample of GetChunck  
  11. char data[1024];  
  12. prs.GetChunk("Document", (LPVOID)&data);  
  13.      

CADORecordset::GetString 
该函数以字符串的形式返回一个记录

  1. // 函数声明  
  2. CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull,   
  3.   long numRows = 0);     
  4.      

参数
LPCTSTR lpCols - 行分隔符
LPCTSTR lpRows - 列分隔符
LPCTSTR lpNull - NUL值的替代字符串
long numRows - 受影响的列数

CADORecordset::GetLastError 
GetLastError函数返回最后一个错误代码

  1. // 函数声明  
  2. DWORD GetLastError();     
  3.      

CADORecordset::GetLastErrorString 
GetLastErrorString函数返回最后一个错误的字符串

  1. // 函数声明  
  2. CString GetLastErrorString();     
  3.      

CADORecordset::AddNew 
AddNew 函数在一个打开的记录集中添加个一个记录

  1. // 函数声明  
  2. BOOL AddNew();  
  3. throw(CADOException);    
  4.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::Edit 
Edit函数允许在一个打开的记录集中更改当前的记录

  1. // 函数声明  
  2. void Edit();    
  3.      

CADORecordset::Delete 
Delete函数在一个打开的记录集中删除当前的的记录

  1. // 函数声明  
  2. BOOL Delete();  
  3.      

返回值
执行成功返回TRUE

CADORecordset::Update 
Update函数在当前记录中更新待更新的数据

  1. // 函数声明  
  2. BOOL Update();   
  3. throw(CADOException);  
  4.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::CancelUpdate 
CancelUpdate函数在一个打开的记录集中取消任何待更新的数据

  1. // 函数声明   
  2. void CancelUpdate();    
  3.      

CADORecordset::SetFieldValue 
SetFieldValue函数设置一个字段的值

  1. // 函数声明  
  2. BOOL SetFieldValue(int nIndex, int nValue);  
  3. BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);  
  4. BOOL SetFieldValue(int nIndex, long lValue);  
  5. BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);  
  6. BOOL SetFieldValue(int nIndex, unsigned long ulValue);  
  7. BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);  
  8. BOOL SetFieldValue(int nIndex, double dblValue);  
  9. BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);  
  10. BOOL SetFieldValue(int nIndex, CString strValue);  
  11. BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);  
  12. BOOL SetFieldValue(int nIndex, COleDateTime time);  
  13. BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);  
  14. BOOL SetFieldValue(int nIndex, bool bValue);  
  15. BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);  
  16. BOOL SetFieldValue(int nIndex, COleCurrency cyValue);  
  17. BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);   
  18.      

参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
int nValue - 一个包含字段值的对象指针
long lValue - 一个包含字段值的对象指针
unsigned long lValue - 一个包含字段值的对象指针
double dbValue - 一个包含字段值的对象指针
CString strValue - 一个包含字段值的对象指针
COleDateTime time - 一个包含字段值的对象指针
bool bValue - 一个包含字段值的对象指针
COleCurrency cyValue - 一个包含字段值的对象指针
返回值
执行成功返回TRUE
查看示例 
例子

  1. // 程序例子  
  2. CADORecordset* prs = new CADORecordset(m_pAdoDb);  
  3. prs->Open("Test", openTable);  
  4. prs->AddNew();  
  5. prs->SetFieldValue(0, "dataU");  
  6. prs->SetFieldValue(1, "data01");  
  7. prs->SetFieldValue(2, (long)51000);  
  8. COleDateTime time = COleDateTime(2001,6,15, 10, 8, 30);  
  9. prs->SetFieldValue(3, time);  
  10. prs->Update();  
  11. prs->Close();  
  12. delete prs;  
  13.      

CADORecordset::Find 
Find 函数使用比较操作符从当前位置查找一个字符串在一个打开的记录集中的位置

  1. // 函数声明  
  2. BOOL Find(LPCTSTR lpFind,   
  3. int nSearchDirection = CADORecordset::searchForward);  
  4.      

参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
int nSearchDirection - 一个表示操作类型的值,可能取值是:
CADORecordset::searchForward - 向后查找
CADORecordset::searchBackward - 向后查找
返回值
执行成功返回TRUE
例子

  1. // 程序例子  
  2. if(prs.Find("Field0 LIKE 'dataU%'"))  
  3. {  
  4.   prs.Delete();  
  5.   while(prs.FindNext())  
  6.     prs.Delete();  
  7. }  
  8.      

CADORecordset::FindFirst 
FindFirst函数从记录集起始位置开始查找一个字符串在一个打开的记录集中的所在位置

  1. // 函数声明   
  2. BOOL FindFirst(LPCTSTR lpFind);  
  3.      

参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
返回值
执行成功返回TRUE

CADORecordset::FindNext 
FindNext 使用类似FindFirst或者Find的操作,从记录集最后位置开始查找一个字符串在一个打开的记录集中的所在位置

  1. // 函数声明  
  2. BOOL FindNext();     
  3.      

返回值
执行成功返回TRUE
查看示例

CADORecordset::GetBookmark 
GetBookmark函数获取在其他时间保存的记录位置

  1. // 函数声明  
  2. BOOL GetBookmark();     
  3.      

返回值
执行成功返回TRUE

CADORecordset::SetBookmark 
SetBookmark函数保存当前记录的位置

  1. // 函数声明  
  2. void SetBookmark();     
  3.      

返回值
执行成功返回TRUE

CADORecordset::SetFilter 
SetFilter在一个打开的记录集中设置一个过滤器

  1. // 函数声明   
  2. BOOL SetFilter(LPCTSTR strFilter);  
  3. throw(CADOException);   
  4.      

参数
LPCTSTR strFilter - 一个由一个或者多个用AND或者OR操作关联在一起的个别从句组成的字符串
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset* pRs = new CADORecordset(pDb);  
  3. if(pRs->Open("tblTest", CADORecordset::openTable))  
  4. {  
  5.     CString strFilter = _T("LastName = 'Smith' And Age > 30");  
  6.     pRs->SetFilter(strFilter);  
  7.     .  
  8.     .  
  9.     pRs->Close();  
  10. }  
  11. delete pRs  
  12.      

CADORecordset::SetSort 
SetSort函数在一个CADORecordset对象中为所有的记录设置分类排序

  1. // 函数声明  
  2. BOOL SetSort(LPCTSTR lpstrCriteria);  
  3. throw(CADOException);    
  4.      

参数
LPCTSTR lpstrCriteria - 一个包含ORDER BY从句SQL语句的字符串
返回值
执行成功返回TRUE

CADORecordset::GetRecordset 
GetRecordset函数返回一个指向打开的记录集的指针

  1. // 函数声明   
  2. _RecordsetPtr GetRecordset();   
  3.      

CADORecordset::GetActiveConnection 
GetActiveConnection返回活动连接

  1. // 函数声明  
  2. _ConnectionPtr GetActiveConnection();  
  3.      

CADORecordset::Clone 
Clone函数从一个现有的CADORecordset对象中创建一个完全一样的CADORecordset对象

  1. // 函数声明   
  2. BOOL Clone(CADORecordset pAdoRecordset);  
  3. throw(CADOException);  
  4.      

参数
CADORecordset pAdoRecordset 是一个现有的CADORecordset对象
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset m_pRs; //Original Recordset  
  3. CADORecordset RS;   //Duplicate Recordset  
  4. CADORecordset* pRs = CADORecordset(m_pDb);  
  5. if(pRs->Open("tblTest", CADORecordset::openTable)) //Open the Original   
  6. Recordset  
  7. {  
  8.     pRs->Clone(RS); //Create the clone of the original Recordset  
  9.     long lClonRecs = RS.GetRecordCount();  
  10.     long lOrigRecs = m_pRs->GetRecordCount();  
  11.     .  
  12.     .  
  13.     RS.Close();  
  14.     pRs->Close();  
  15. }  
  16. delete pRs;  
  17.      

CADORecordset::SaveAsXML 
SaveAsXML 函数保存打开的记录集到一个XML格式的文件中。

  1. // 函数声明  
  2. BOOL SaveAsXML(LPCTSTR lpstrXMLFile);<br />     
  3.      

参数
LPCTSTR strXMLFile - 一个字符串,指示将保存记录集的完整的路径和文件名
返回值
执行成功返回TRUE

CADORecordset::OpenXML 
OpenXML函数打开一个XML文件格式到记录集中。

  1. // 函数声明  
  2. BOOL OpenXML(LPCTSTR lpstrXMLFile);   
  3.      

参数
LPCTSTR strXMLFile - 一个字符串,指示将要打开的完整的路径和文件名的XML文件
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CADORecordset* pRs = CADORecordset(pDB);  
  3. if(prs->OpenXML("C://My.XML"))  
  4. {  
  5.     CString strClient = _T("");  
  6.     double dblVal = 0;  
  7.     long lrecs = prs->GetRecordCount();  
  8.     if(!prs->IsEof())  
  9.         prs->MoveFirst();  
  10.     prs->GetFieldValue("Budget", dblVal);  
  11.     prs->GetFieldValue("ClientName", strClient);  
  12.     prs->Close();  
  13. }  
  14.      

//函数声明

CADORecordset::OpenSchema 
OpenSchema函数从提供者获取数据库图表信息

  1. // 函数声明   
  2. BOOL OpenSchema(int nSchema, LPCTSTR SchemaID = _T(""));  
  3. throw(CADOException);  
  4.      

参数
int nSchema - 一个指示要图表查询类型的变量
LPCTSTR SchemaID = _T("") - 未被OLE DB定义用于提供者图表查询的GUID

Constant Value Description Constraint Columns
schemaAsserts 0 Returns the assertions defined in the catalog that are owned by a given user.

(ASSERTIONS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaCatalogs 1 Returns the physical attributes associated with catalogs accessible from the DBMS.

(CATALOGS Rowset )

CATALOG_NAME
schemaCharacterSets 2 Returns the character sets defined in the catalog that are accessible to a given user.

(CHARACTER_SETS Rowset )

CHARACTER_ SET_CATALOG *
CHARACTER_ SET_SCHEMA *
CHARACTER_SET _NAME *
schemaCheckConstraints 5 Returns the check constraints defined in the catalog that are owned by a given user.

(CHECK_CONSTRAINTS Rowset)

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaCollations 3

Returns the character collations defined in the catalog that are accessible to a given user.

(COLLATIONS Rowset )

COLLATION_ CATALOG *
COLLATION_SCHEMA 
COLLATION_NAME
schemaColumnPrivileges 13

Returns the privileges on columns of tables defined in the catalog that are available to, or granted by, a given user.

(COLUMN_PRIVILEGES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME 
GRANTOR 
GRANTEE
schemaColumns 4

Returns the columns of tables (including views) defined in the catalog that are accessible to a given user.

(COLUMNS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaColumnsDomainUsage 11 Returns the columns defined in the catalog that are dependent on a domain defined in the catalog and owned by a given user.

(COLUMN_DOMAIN_USAGE Rowset )

DOMAIN_CATALOG 
DOMAIN_SCHEMA 
DOMAIN_NAME 
COLUMN_NAME
schemaConstraintColumnUsage 6 Returns the columns used by referential constraints, unique constraints, check constraints, and assertions, defined in the catalog and owned by a given user.

(CONSTRAINT_COLUMN_USAGE Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaConstraintTableUsage 7 Returns the tables that are used by referential constraints, unique constraints, check constraints, and assertions defined in the catalog and owned by a given user.

(CONSTRAINT_TABLE_USAGE Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaCubes 32 Returns information about the available cubes in a schema (or the catalog, if the provider does not support schemas).

(CUBES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME
schemaDBInfoKeywords 30 Returns a list of provider-specific keywords.

(IDBInfo::GetKeywords* )

<None>
schemaDBInfoLiterals 31 Returns a list of provider-specific literals used in text commands.

(IDBInfo::GetLiteralInfo* )

<None>
schemaDimensions 33 Returns information about the dimensions in a given cube. It has one row for each dimension.

(DIMENSIONS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_NAME 
DIMENSION_ UNIQUE_NAME *
schemaForeignKeys 27 Returns the foreign key columns defined in the catalog by a given user.

(FOREIGN_KEYS Rowset )

PK_TABLE_CATALOG 
PK_TABLE_SCHEMA 
PK_TABLE_NAME 
FK_TABLE_CATALOG 
FK_TABLE_SCHEMA 
FK_TABLE_NAME
schemaHierarchies 34 Returns information about the hierarchies available in a dimension.

(HIERARCHIES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_NAME 
HIERARCHY_ UNIQUE_NAME *
schemaIndexes 12 Returns the indexes defined in the catalog that are owned by a given user.

(INDEXES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
INDEX_NAME 
TYPE 
TABLE_NAME
schemaKeyColumnUsage 8 Returns the columns defined in the catalog that are constrained as keys by a given user.

(KEY_COLUMN_USAGE Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME 
TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
COLUMN_NAME
schemaLevels 35 Returns information about the levels available in a dimension.

(LEVELS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_NAME 
LEVEL_ UNIQUE_NAME *
schemaMeasures 36 Returns information about the available measures.

(MEASURES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
MEASURE_NAME 
MEASURE_ UNIQUE_NAME *
schemaMembers 38 Returns information about the available members.

(MEMBERS Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_ UNIQUE_NAME *
LEVEL_NUMBER 
MEMBER_NAME 
MEMBER_UNIQUE _NAME *
MEMBER_CAPTION 
MEMBER_TYPE 
Tree operator (For more information, see the OLE DB for OLAP documentation.)
schemaPrimaryKeys 28 Returns the primary key columns defined in the catalog by a given user.

(PRIMARY_KEYS Rowset )

PK_TABLE_CATALOG 
PK_TABLE_SCHEMA 
PK_TABLE_NAME
schemaProcedureColumns 29 Returns information about the columns of rowsets returned by procedures.

(PROCEDURE_COLUMNS Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
COLUMN_NAME
schemaProcedureParameters 26 Returns information about the parameters and return codes of procedures.

(PROCEDURE_PARAMETERS Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
PARAMETER_NAME
schemaProcedures 16 Returns the procedures defined in the catalog that are owned by a given user.

(PROCEDURES Rowset )

PROCEDURE_ CATALOG *
PROCEDURE_SCHEMA 
PROCEDURE_NAME 
PROCEDURE_TYPE
schemaProperties 37 Returns information about the available properties for each level of the dimension.

(PROPERTIES Rowset* )

CATALOG_NAME 
SCHEMA_NAME 
CUBE_NAME 
DIMENSION_ UNIQUE_NAME *
HIERARCHY_ UNIQUE_NAME *
LEVEL_ UNIQUE_NAME *
MEMBER_ UNIQUE_NAME *
PROPERTY_TYPE 
PROPERTY_NAME
schemaProviderSpecific -1 Used if the provider defines its own nonstandard schema queries. <Provider specific>
schemaProviderTypes 22 Returns the (base) data types supported by the data provider.

(PROVIDER_TYPES Rowset )

DATA_TYPE 
BEST_MATCH
schemaReferentialConstraints 9 Returns the referential constraints defined in the catalog that are owned by a given user.

(REFERENTIAL_CONSTRAINTS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME
schemaSchemata 17 Returns the schemas (database objects) that are owned by a given user.

(SCHEMATA Rowset )

CATALOG_NAME 
SCHEMA_NAME 
SCHEMA_OWNER
schemaSQLLanguages 18 Returns the conformance levels, options, and dialects supported by the SQL-implementation processing data defined in the catalog.

(SQL_LANGUAGES Rowset )

<None>
schemaStatistics 19 Returns the statistics defined in the catalog that are owned by a given user.

(STATISTICS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaTableConstraints 10 Returns the table constraints defined in the catalog that are owned by a given user.

(TABLE_CONSTRAINTS Rowset )

CONSTRAINT_ CATALOG *
CONSTRAINT_ SCHEMA *
CONSTRAINT_NAME 
TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
CONSTRAINT_TYPE
schemaTablePrivileges 14 Returns the privileges on tables defined in the catalog that are available to, or granted by, a given user.

(TABLE_PRIVILEGES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
GRANTOR 
GRANTEE
schemaTables 20 Returns the tables (including views) defined in the catalog that are accessible to a given user.

(TABLES Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME 
TABLE_TYPE
schemaTranslations 21 Returns the character translations defined in the catalog that are accessible to a given user.

(TRANSLATIONS Rowset )

TRANSLATION_ CATALOG *
TRANSLATION_ SCHEMA *
TRANSLATION _NAME *
schemaTrustees 39 Reserved for future use.  
schemaUsagePrivileges 15 Returns the USAGE privileges on objects defined in the catalog that are available to, or granted by, a given user.

(USAGE_PRIVILEGES Rowset )

OBJECT_CATALOG 
OBJECT_SCHEMA 
OBJECT_NAME 
OBJECT_TYPE 
GRANTOR 
GRANTEE
schemaViewColumnUsage 24 Returns the columns on which viewed tables, defined in the catalog and owned by a given user, are dependent.

(VIEW_COLUMN_USAGE Rowset)

VIEW_CATALOG 
VIEW_SCHEMA 
VIEW_NAME
schemaViews 23 Returns the views defined in the catalog that are accessible to a given user.

(VIEWS Rowset )

TABLE_CATALOG 
TABLE_SCHEMA 
TABLE_NAME
schemaViewTableUsage 25 Returns the tables on which viewed tables, defined in the catalog and owned by a given user, are dependent.

(VIEW_TABLE_USAGE Rowset )

VIEW_CATALOG 
VIEW_SCHEMA 
VIEW_NAME

返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. try  
  3. {  
  4.     CADODatabase* pdb = new CADODatabase();  
  5.     if(pdb.Open("Data Source=sysdevpdc;Provider="   
  6.                     "MSOLAP;Initial Catalog=Foodmart 2000"))  
  7.     {  
  8.         CADORecordset prs(&pdb);  
  9.         if(prs.OpenSchema(CADORecordset::schemaMeasures))  
  10.         {  
  11.             while(!prs.IsEof())  
  12.             {dset::schemaMeasures))  
  13.         {  
  14.             while(!prs.IsEof())  
  15.             {  
  16.                 CString strValue;  
  17.                 CString strUniqueName;  
  18.                 CString strSqlColumnName;  
  19.                 int nDataType = 0;  
  20.                 int nValue = 0;  
  21.                 prs.GetFieldValue("CUBE_NAME", strValue);  
  22.                 prs.GetFieldValue("MEASURE_NAME", strValue);  
  23.                 prs.GetFieldValue("MEASURE_AGGREGATOR", nValue);  
  24.                 prs.GetFieldValue("MEASURE_UNIQUE_NAME",   
  25.                                                   strUniqueName);  
  26.                 prs.GetFieldValue("MEASURE_NAME_SQL_COLUMN_NAME",   
  27.                                                strSqlColumnName);  
  28.                 prs.GetFieldValue("DATA_TYPE", nDataType);  
  29.                 prs.MoveNext();  
  30.             }  
  31.         }  
  32.         prs.Close();  
  33.     }  
  34. }  
  35. catch(CADOException &e)  
  36. {  
  37. ...  
  38. }  
  39.      

//函数声明

CADORecordset::Requery 
Requery函数重新刷新一个打开记录集

  1. // 函数声明   
  2. BOOL Requery();  
  3. throw(CADOException);   
  4.      

返回值
执行成功返回TRUE
示例01

  1. CADODatabase* pAdoDb = new CADODatabase();  
  2. CString strConnection = "";  
  3. strConnection = _T("Provider=MSDASQL;"  
  4.                   "PersistSecurityInfo=False;Trusted_Connection=Yes  
  5. Data Source=Access Sql Server;catalog=sampledb");  
  6. if(pAdoDb->Open((LPCTSTR)strConnection))  
  7. {  
  8.     CString strQry = _T("");  
  9.     int numRecords;  
  10.     strQry.Format(_T("sp_StoreClientFields_ps '%s', %d"),   
  11.                   (LPCTSTR)strParam1, nParam2);  
  12.     CADORecordset* pRs = new CADORecordset(pAdoDb);  
  13.     if(!pRs->Open((LPCTSTR)strQry))  
  14.     {  
  15.     delete pRs;  
  16.     delete pAdoDb;  
  17.     return FALSE  
  18.     }  
  19.     numRecords = pRs->GetRecordCount();  
  20.     while(!pRs->IsEof())  
  21.     {  
  22.       CString strVal = _T("");  
  23.       int nVal = 0;  
  24.       //Get Numeric Field Value  
  25.       pRs->GetFieldValue("NumField1", nVal)  
  26.       //Get String Field Data  
  27.       pRs->GetFieldValue("StrField..", strVal)  
  28.         DoSomething(nVal, strVal);  
  29.         pRs->MoveNext();  
  30.     }  
  31.     pRs->Close();  
  32. }  
  33. else  
  34.   return FALSE;  

 

CADOParameter类 
CADOParameter类封装了一套_ParameterPtr智能指针相关的函数

CADOParameter::CADOParameter 
创建一个CADOParameter对象

  1. // 函数声明  
  2. CADOParameter(int nType, long lSize = 0, int nDirection = paramInput,   
  3.               CString strName = _T(""));  
  4.      

参数
int nType - 一个指定的CADOParameter对象数据类型整形变量。可以取CADORecordset::GetFieldInfo中一个指定值。假如您使用CADORecordset::typeNumeric 或者CADORecordset::typeDecimal,您必须定义精确度和刻度值
long lSize = 0 - 一个可选的长整形,指定了参数值最大的字节或者字符长度
int nDirection = paramInput - 一个可选的整型值,指定了CADOParameter对象的用途。可以取以下值之一:
CADOParameter::paramUnknown - 表明参数用途未知
CADOParameter::paramInput - 默认值,表明参数做为输入参数
CADOParameter::paramOutput - 表明参数作为输出参数
CADOParameter::paramInputOutput - 表明参数同时作为输入输出参数
CADOParameter::paramReturnValue - 表明参数作为一个返回值
CString strName = _T("") - 一个可选字符串,指定了CADOParameter实例名称
查看示例

CADOParameter::SetValue 
SetValue 设置CADOParameter对象的值

  1. // 函数声明  
  2. BOOL SetValue(int nValue);  
  3. BOOL SetValue(long lValue);  
  4. BOOL SetValue(double dbValue);  
  5. BOOL SetValue(CString strValue);  
  6. BOOL SetValue(COleDateTime time);  
  7. BOOL SetValue(_variant_t vtValue);     
  8.      

参数
* int nValue - 一个包含参数值的整形
* long lValue - 一个包含参数值的长整形
* double dbValue - 一个包含参数值的双精度浮点数
* CString strValue - 一个包含参数值的字符串
* COleDateTime time - 一个包含参数值的时间
* _variant_t vtValue - 一个包含参数值的变体变量
返回值
执行成功返回TRUE
查看示例

CADOParameter::SetPrecision 
SetPrecision函数设置CADOParameter对象对象的精度

  1. // 函数声明   
  2. void SetPrecision(int nPrecision);  
  3.      

CADOParameter::SetScale 
SetScale 函数设置CADOParameter对象对象的刻度

  1. // 函数声明  
  2. void SetScale(int nScale);     
  3.      

CADOParameter::GetValue 
GetValue函数返回CADOParameter对象对象的值

  1. // 函数声明   
  2. BOOL GetValue(int& nValue);  
  3. BOOL GetValue(long& lValue);  
  4. BOOL GetValue(double& dbValue);  
  5. BOOL GetValue(CString& strValue, CString strDateFormat = _T(""));  
  6. BOOL GetValue(COleDateTime& time);  
  7. BOOL GetValue(_variant_t& vtValue);    
  8.      

参数
* int& nValue - 一个将要储存参数值的整形引用
* long& lValue - 一个将要储存参数值的长整形引用
* double& dbValue - 一个将要储存参数值的双精度浮点数引用
* CString& strValue - 一个将要储存参数值的字符串引用
* CString strDateFormat = _T("") - 一个格式化字符串,类似strftime格式化的字符串
* COleDateTime& time - 一个将要储存参数值的时间引用
* _variant_t& vtValue - 一个将要储存参数值的变体变量引用 
返回值
执行成功返回TRUE
查看示例

CADOParameter::SetName 
SetName函数设置CADOParameter对象名称

  1. // 函数声明  
  2. CString SetName(CString strName);    
  3.      

参数
CString strName - 一个指定参数名字的字符串

CADOParameter::GetName 
GetName函数返回CADOParameter对象名称

  1. // 函数声明  
  2. CString GetName();  
  3.      

CADOCommand::GetType
GetType函数返回CADOParameter对象的类型

  1. // 函数声明  
  2. int GetType();  
  3.      

CADOParameter::GetParameter 
GetParameter函数返回一个_Parameter对象指针

  1. // 函数声明   
  2. _ParameterPtr GetParameter();   
  3.      

CADOCommand 类 
CADOCommand类封装了一个套_CommandPtr智能指针相关的函数

CADOCommand::CADOCommand 
创建一个CADOCommand对象

  1. // 函数声明   
  2. CADOCommand(CADODatabase* pAdoDatabase, CString strCommandText = _T(""),  
  3.                                   int nCommandType = typeCmdStoredProc);    
  4.      

参数
CADODatabase* pAdoDatabase - 一个CADODatabase对象指针
CString strCommandText = _T("") - 一个可选的字符串,指出CADOCcommand对象的标题
int nCommandType = typeCmdStoredProc - 一个可选的整形,指出CADOCommand对象的类型。可取一下值中的一个:
CADOCommand::typeCmdText - 检测CommandText作为一个定义的命令文本或者存储过程来调用
CADOCommand::typeCmdTable - 检测CommandText作为一个表名称,使用一个内部生成的SQL查询返回所有的行
CADOCommand::typeCmdTableDirect - 检测CommandText作为一个返回全部行的表名称
CADOCommand::typeCmdStoredProc - 默认值,检测CommandText作为存储过程
CADOCommand::typeCmdUnknown - 指出CommandText内容的类型是未知的
CADOCommand::typeCmdFile - 检测CommandText作为一个不断被储存记录集的文件名。只能在Recordset.Open或者Requery使用
查看示例

CADOCommand::AddParameter 
AddParameter 函数

  1. // 函数声明   
  2. BOOL AddParameter(CADOParameter* pAdoParameter);  
  3. BOOL AddParameter(CString strName, int nType, int nDirection,  
  4.                           long lSize, int nValue);  
  5. BOOL AddParameter(CString strName, int nType, int nDirection,  
  6.                           long lSize, long lValue);  
  7. BOOL AddParameter(CString strName, int nType, int nDirection,  
  8.                           long lSize, double dblValue, int nPrecision = 0,  
  9.                           int nScale = 0);  
  10. BOOL AddParameter(CString strName, int nType, int nDirection,  
  11.                           long lSize, CString strValue);  
  12. BOOL AddParameter(CString strName, int nType, int nDirection,  
  13.                           long lSize, COleDateTime time);  
  14. BOOL AddParameter(CString strName, int nType, int nDirection,  
  15.                           long lSize, _variant_t vtValue, int nPrecision = 0,  
  16.                           int nScale = 0);  
  17.      

参数
CADOParameter* pAdoParameter - 一个指向CADOParameter对象的指针
CString strName - 一个字符串,指出参数的名称
int nType - 一个整形值,指出CADOParameter对象的数据类型,可以取在CADORecordset::GetFieldInfo中指定的一个值。假如您使用CADORecordset::typeNumeric或者CADORecordset::typeDecimal,您必须定义了精度和刻度值。
int nDirection - 一个整形变量,指出CADOParameter对象的用途,可以取在CADOParameter::CADOParameter中指定的一个值 
long lSize - 一个长整形,指出参数值的最大的字节或者字符长度
int nValue - 一个包含参数值的整形值
long lValue - 一个包含参数值的长整形值
double dblValue - 一个包含参数值的双精度浮点值
int nPrecision - 一个包含参数值的精度的整形值
int nScale - 一个包含参数值的比例的整形值
CString strValue - 一个包含参数值的字符串
COleDateTime time - 一个包含参数值的时间值
_variant_t vtValue - 一个包含参数值的变体变量值
返回值
执行成功返回TRUE

查看示例

CADOCommand::SetText 
SetText函数设置CADOCommand对象的命令文本

  1. // 函数声明   
  2. void SetText(CString strCommandText);   
  3.      

参数
CString strCommandText - 一个字符串,指出命令的文本

CADOCommand::GetText 
GetText函数返回CADOCommand对象的命令文本

  1. // 函数声明  
  2. CString GetText();     
  3.      

CADOCommand::SetType 
SetType函数设置CADOCommand对象的类型

  1. // 函数声明  
  2. void SetType(int nCommandType);    
  3.      

参数
int nCommandType - 一个整形值,指出命令的类型

CADOCommand::GetType 
GetType函数返回CADOCommand对象的类型

  1. // 函数声明  
  2. int GetType();   
  3.      

CADOCommand::GetCommand 
GetCommand函数返回一个Command指针

  1. // 函数声明  
  2. _CommandPtr GetCommand();    
  3.      

CADOCommand::Execute 
Execute 函数执行命令的文本

  1. // 函数声明   
  2. BOOL Execute();  
  3.      

返回值
执行成功返回TRUE

CADOCommand::GetRecordsAffected 
GetRecordsAffected函数返回最后个命令执行后影响的记录个数

  1. // 函数声明  
  2. int GetRecordsAffected();    
  3.      

示例02

  1. // 程序例子  
  2. //SQL SCRIPT...  
  3. Create Procedure sp_OutputTest  
  4. @IN1 int,  
  5. @OutInt int Output,  
  6. @OutChar varchar(20) Output  
  7. As     
  8.     SELECT      
  9.         @OutChar = 'Hello World'  
  10.     SELECT      
  11.         @OutInt = 10 * @IN1  
  12.     return (90)  
  13. GO  
  14. //Visual C++ Code...  
  15. CADOParameter pParamRetVal(CADORecordset::typeInteger, sizeof(int),  
  16.                            CADOParameter::paramReturnValue);  
  17. CADOParameter pParamIn(CADORecordset::typeInteger, sizeof(int));  
  18. CADOParameter pParamOutInt(CADORecordset::typeInteger, sizeof(int),  
  19.                            CADOParameter::paramOutput);  
  20. CADOParameter pParamOutChar(CADORecordset::typeChar, sizeof(char) * 20,  
  21.                             CADOParameter::paramOutput);  
  22. pParamIn.SetValue(2);  
  23. CADOCommand pCmd(&pDb, "sp_OutputTest");  
  24. pCmd.AddParameter(&pParamRetVal);  
  25. pCmd.AddParameter(&pParamIn);  
  26. pCmd.AddParameter(&pParamOutInt);  
  27. pCmd.AddParameter(&pParamOutChar);  
  28. CADORecordset* prs = new CADORecordset(pDb);  
  29. if(pRs->Execute(&pCmd))  
  30. {  
  31.     int nVal = 0;  
  32.     int nRetVal = 0;  
  33.     CString str = _T("");  
  34.     pParamRetVal.GetValue(nRetVal);  
  35.     pParamOutInt.GetValue(nVal);  
  36.     pParamOutChar.GetValue(str);  
  37. }  
  38. delete pRS;   
  39.      

CJectEngine类 
CJectEngine类封装了一套_RecordsetPtr智能指针相关的函数

CJetEngine::CompactDatabase 
压缩一个Access 数据库

  1. // 函数声明   
  2. BOOL CompactDatabase(CString strDatabaseSource, CString strDatabaseDestination);  
  3.      

参数
CString strDatabaseSource - 一个源数据库连接字符串
CString strDatabaseDestination - 一个目的数据库连接字符串
注:
连接字符串必须是这样的:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/the Database Path"
返回值
执行成功返回TRUE
例子

  1. // 程序例子   
  2. CString strCompactedDBConnection;  
  3. CString strConnection;  
  4. CString strCompactedDBPath = _T("C://My Projects//Database//SampleDB.tmp");  
  5. CString strDatabasePath = _T("C://My Projects//Database//SampleDB.mdb");  
  6. strCompactedDBConnection.Format("Provider=Microsoft.Jet.OLEDB."   
  7.         "4.0;Data Source=%s", strCompactedDBPath.GetBuffer(0));  
  8. strConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",   
  9.                                          strDatabasePath.GetBuffer(0));  
  10. if(CJetEngine::CCompactDatabase(strConnection, strCompactedDBConnection))  
  11. {  
  12.     ::CopyFile(strCompactedDBPath.GetBuffer(0),   
  13.           strDatabasePath.GetBuffer(0), FALSE);  
  14. }  
  15.      

CADOException类 
CADOException类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因

CADOException::CADOException 
创建一个CADOException对象

  1. // 函数声明  
  2. CADOExcpetion();  
  3.      

检索ADO错误信息
构建一个CADOException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来检索关于这个错误的信息
例子

  1. // 程序例子  
  2. try  
  3. {  
  4.     if(pDb.Open(_T("Provider=Microsoft.JET.OLEDB.4.0;")   
  5.                 _T("Data source = c://vc projects//ado//dbTest.mdb;")))  
  6.     {  
  7.         CADORecordset pRS(&pDb);  
  8.         if(pRS.Open("tbltest", CADORecordset::openTable))  
  9.         {  
  10.             pRS.SetSort("Descriptions");  
  11.             .  
  12.             .  
  13.             .  
  14.         }  
  15.         pRS.Close();  
  16.     }  
  17. }  
  18. catch(CADOException &e)  
  19. {  
  20.     AfxMessageBox(e.GetErrorMessage());  
  21. }  
  22.        

CADOException::GetErrorMessage 

  1. // 函数声明  
  2. CString GetErrorMessage() const;     
  3.      

返回值
返回错误的描述
查看示例

CADOException::GetError 

  1. // 函数声明  
  2. long GetError();  
  3.      

返回值
返回错误代码

CADOException::SetError 

  1. // 函数声明   
  2. void SetError(long lErrorCode = 0);  
  3. void SetErrorMessage(LPCSTR lpstrError = _T(""));    
  4.      

参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串

COLEDBDataLink类 
COLEDBDataLink 类是一个工具类,用来创建和编辑数据链

COLEDBDataLink::COLEDBDataLink 
创建一个COLEDBDataLink 对象

  1. // 函数声明     
  2. COLEDBDataLink();  
  3.      

COLEDBDataLink::New 

  1. // 函数声明  
  2. CString New(HWND hWnd = NULL);  
  3. throw(COLEDBException);     
  4.      

参数
HWND hWnd = NULL - 父窗口句柄
返回值
返回一个字符串告之相应的连接字符串创建的连接
查看示例

COLEDBDataLink::Edit 

  1. // 函数声明  
  2. void Edit(LPCSTR lpstrConnectionString, HWND hWnd);  
  3. throw(COLEDBException);     
  4.      

参数
LPCSTR lpstrConnectionString 
HWND hWnd - 父窗口句柄
例子

  1. // 函数声明  
  2. //程序例子  
  3. COLEDBDataLink dtlnk;  
  4. try  
  5. {  
  6.     dtlnk.Edit("Provider=Microsoft.JET.OLEDB.4.0;Data source"   
  7.                " = c://vc projects//ado//dbTest.mdb;"this->m_hWnd);  
  8. }  
  9. catch(COLEDBException &e)  
  10. {  
  11.     AfxMessageBox(e.GetErrorMessage());  
  12. }  
  13.      

COLEDBException类 
COLEDBException 类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因

OLEDBException::COLEDBException 
创建一个COLEDBException对象

  1. // 函数声明  
  2. COLEDBException();  
  3.      

检索ODEDB错误信息
构建一个COLEDBException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来接收关于这个错误的信息
例子

  1. // 程序例子  
  2. CADODatabase pDb;  
  3. COLEDBDataLink dtlnk;  
  4. try  
  5. {  
  6.     pDb.Open(dtlnk.New(this->m_hWnd));  
  7. }  
  8. catch(COLEDBException &e)  
  9. {  
  10.     AfxMessageBox(e.GetErrorMessage());  
  11. }  
  12.      

OLEDBException::GetErrorMessage 

  1. // 函数声明  
  2. CString GetErrorMessage() const;    
  3.      

返回值
返回错误的描述
查看示例

OLEDBException::GetError 

  1. // 函数声明  
  2. long GetError();  
  3.      

返回值
返回错误代码

OLEDBException::SetError 

  1. // 函数声明   
  2. void SetError(long lErrorCode = 0);  
  3. void SetErrorMessage(LPCSTR lpstrError = _T(""));    
  4.      

参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串

常见问题

如何把CADORecordset与微软的DataGrid控件进行绑定;

第一:您需要添加微软的DataGrid控件到您的程序中
第二:用CADORecordset::GetRecordset函数申请来给数据控件类的SetRefDataSource 函数使用

  1. // 程序例子  
  2. if(m_pRs.Open("tblTest", CADORecordset::openTable))  
  3. {  
  4.     //m_datagridctrl is the CDataGrid Class...  
  5.     m_datagridctrl.SetCaption("Clients");  
  6.     m_datagridctrl.SetRefDataSource(NULL);  
  7.     m_datagridctrl.SetRefDataSource((LPUNKNOWN)m_pRs.GetRecordset());  
  8.     m_datagridctrl.Refresh();  
  9. }    
  10.      

 

涉及到如何添加一个数据控件(微软DataGrid控件)到您的工程中,请参阅拉希德Thadha的这篇文章

 

 

我该如何重新排序记录集?

这个问题很简单,您使用_RecordsetPtr的部分函数和属性。使用CADORecordset::GetRecordset(),您会获得一个_RecordsetPtr指针,您可以使用它来设置Sort属性
注:您不必使用_RecordsetPtr::Refresh()

 

现在:您就使用CADORecordset::SetSort()函数。

 

 

致命错误C1010:意外的文件尾在查找编译头指令

为了解决这个常见问题,您需要使用自动使用编译头。选择工程/设置 (或者 ALT+F7键),在工程设置对话框,选择C/C++书签页,然后在组合框中选择预编译头一项,并选择自动使用编译头选项。

 

在SQL Server中您如何获取您的存储过程返回码
您必须使用CADOParameter 类,CADOParameter::paramReturnValue获取转存过程的返回值,它总是必定是一个整形,必须在参数列表的第一个位置。假如您不使用参数来输入或者输出,那么您只需要使用这个参数
查看示例

 

 

我尝试使用CADOCommand 类并能进入UUID 字段,但迄今为止我没有成功过。您能抽空为此写个例子吗?

您说的是uniqueidentifier 类型的字段吗?好的,这个问题如下:
首先您更新表使用SQL语句的NEWID()。这个命令将为你做一个独一无二的字符串如"{B6B83A8C-F92C-4FA7-9641-631143E6056C}"。想要插入数据到字段的类型中,您必须使用类似的字符串。最后,我们可以说:您应该使用带有GUID格式字符串参数类型。它必须是唯一的。是不是有很多条件!!!
不过,我写了一个示例,在下面的示例中,您会看到我使用了UUID作为字符串参数。您还看见转存过程的参数是uniqueidentifier类型的。

  1. // 程序例子  
  2. //Visual C++ Sample  
  3. CADOParameter pParamRet(CADORecordset::typeInteger, sizeof(int),  
  4.                         CADOParameter::paramReturnValue);  
  5. CADOParameter pParamInChar(CADORecordset::typeChar, sizeof(char) * 40,  
  6.                            CADOParameter::paramInput);  
  7. CADOParameter pParamID(CADORecordset::typeInteger, sizeof(int));  
  8. CString strUUID = CString("{B6B83A8C-F92C-4FA7-9641-631143E6056C}");  
  9. pParamInChar.SetValue(strUUID);  
  10. pParamID.SetValue(1);  
  11. CADOCommand pCmd(&m_pDB, "sp_UUIDTest");  
  12. pCmd.AddParameter(&pParamRet);  
  13. pCmd.AddParameter(&pParamInChar);  
  14. pCmd.AddParameter(&pParamID);  
  15. if(pRs.Execute(&pCmd))  
  16. {  
  17.     int nVal = 0;  
  18.     pParamRet.GetValue(nVal);  
  19. }     
  20.        

  1. // SQL SCRIPT  
  2. Create Procedure sp_UUIDTest  
  3. @UUID uniqueidentifier = NULL,  
  4. @ID integer  
  5. AS  
  6.     UPDATE  
  7.         systable01  
  8.     SET  
  9.         UUID = @UUID  
  10.     WHERE  
  11.         sysfield00 = @ID  
  12.       
  13.     if @@Error = 0  
  14.         return 1  
  15.     else  
  16.         return 99  
  17. GO    
  18.         

 

 

 

 

ADO与ADOX在一起

我每天收到几个邮件问我如何是使用ADO与ADOX类一起工作。答案是,现在现在从ADO2.10版本后,您可以使用两种类型类一起工作。您必须包含每个类头文件和CPP文件,然后在该项目中包含头文件
注意
证实包含头文件必须按如下顺序是很重要的,首先是ADOX类头文件,然后才是ADO类头文件。

  1. // 包含头文件  
  2. #include <adox.h>  
  3. #include <ado2.h>    
  4.      

 

 

 

Carlos A. Antollini.

更新

25 Apr 2001 - 1.0版本发布

20 May 2001 - 1.1版本
添加了如下函数
AbsolutePage, GetPageCount, PageSize, AbsolutePosition, GetFieldInfo, GetChunk, GetString.

29-Jun-2001 - 1.2版本
添加了如下函数 
AddNew, Edit, Delete, Update, CancelUpdate, SetFieldValue, Find, FindFirst, FindNext, SetBookmark, GetBookmark.

29-Sept-2001 - 1.25版本
添加对SQL Server2000的支持
修正Robert Pittenger报告的空字段bug

10-Oct-2001 - 1.30版本
修正ugGiles Forster 和 Rainer Mangold 
报告的SetFieldValue 中空字段bug
添加数据枚举类型

05-Nov-2001 - 版本1.37
CADORecodset更新能添加绑定到DataGrid的功能
添加GetLastErrorString 函数和改变GetLastError函数返回的数据类型
添加Clone和SetFilter函数(应Marcel Stoica的要求)

15-Jan-2002 - 1.40版本
添加Giles Forster写的GetChunk和AppendChunk函数

15-Feb-2002 - 1.45版本
修正J. C. Martinez Gal?n 报告的十进制字段的bug
添加XML支持

04-Apr-2002 - 2.00版本
添加CADOParameter 和 CADOCommand类

14-May-2002 - 2.01版本
在CADORecordset::GetFieldValue和CADORecordset::SetFieldValue添加COleCurrency和bool

25-July-2002 - 2.04版本
添加CADODatabase::GetRecordsAffcetd, CADOCommand::GetRecordsAffected, CADOCommand::Execute, CADOParameter::SetPrecision, CADOParamater::SetScale和修正CADOCommand::AddParameter中的bug

2-July-2003 - 2.10 版本
添加与ADOX类一起使用的时候兼容性(应很多人的要求)
添加Added CADODatabase::SetConnectionMode, CADORecordset::OpenSchema
添加CJetEngine::CCompactDatabase

2-October-2003 - 2.11版本
Jan Stocker修复在CADOCommand中的内存泄露

08-August-2004 - 创建了COLEDBDataLink 1.01版本
创建COLEDBDataLink 类,并添加到了ADO类中

10-Februry-2005 - 2.15版本
添加了CADOException 类

 

特别感谢
这些类受到了很多用户的建议,非常感谢您们的合作
* Rainer Mangold
* Christian Graus
* Mike Osbahr
* Francis BONTHOUX
* Spiros Prantalos
* Robert Pittenger
* Giles Forster
* Rob Sandhu
* Marcel Stoica
* Daniel Berman
* Jan Stocker
* And tons of people requesting for new versions.

许可
这篇文章,以及任何相关源代码和文件,授权见The Microsoft Public License (Ms-PL)

关于作者
Carlos Antollini 是一个软件工程师,致力于面向对象,Visual C++, MFC, COM, ATL, ADO,互联网技术和商业智能工作
Carlos来自阿根廷,住在劳德代尔堡,佛罗里达州,为花旗银行工作多年。然后他开始了他的事业。
Carlos是"http://www.piFive.com">piFive["_blank" title="piFive" href="http://www.piFive.com">^]创作者,一家商业智能分析平台软件,它涉及到未来"http://www.latinsys.com">latinsys["_blank" title="latinsys" href="http://www.latinsys.com">^],他的合伙人企业
目前他在花旗集团分享项目管理和BI热情
工作:设计师
公司名称:花旗集团 
国籍:阿根廷

 

抱歉!评论已关闭.