A set of ADO classes - version 2.20 - CodeProject
为了方便大家下载源代码 ,我的资源中也放了一份拷贝。
英语挺烂的,硬着头皮算是翻译下来了,第一次做网页排版,有什么错误请大家回帖指出来,我好方便修改。
概述
- CADODatabase类
- CADORecordset类
- CADORecordset
- Open
- Execute
- GetQuery
- SetQuery
- RecordBinding
- GetRecordCount
- IsOpen
- Close
- GetFieldCount
- GetFieldValue
- IsFieldNull
- IsFieldEmpty
- IsEof
- IsBof
- Move
- AbsolutePage
- GetPageCount
- PageSize
- AbsolutePosition
- GetFieldInfo
- GetChunk
- AppendChunk
- GetString
- GetLastError
- GetLastErrorString
- AddNew
- Edit
- Delete
- Update
- CancelUpdate
- SetFieldValue
- Find
- FindFirst
- FindNext
- GetBookmark
- SetBookmark
- SetFilter
- SetSort
- GetRecordset
- GetActiveConnection
- Clone
- SaveAsXML
- OpenXML
- OpenSchema
- Requery
- CADOParameter类
- CADOCommand类
- CJectEngine类
- CADOException类
- COLEDBDataLink
- COLEDBException
- 常见问题
概述
我创建这些类使得我们更容易使用ADO来做我们的工作。比如我创建了CADODatabse和CADORecordset类
CADODatabse类
CADODatabse类封装了一套_ConnectionPtr智能指针相关的函数
CADODatabase::CADODatabase
创建一个CADODatabase对象
- // 函数声明
- CADODatabase();
CADODatabase::Open
Open函数打开一个数据库连接
- // 函数声明
- BOOL Open(LPCTSTR lpstrConnection = _T(""));
- throw(CADOException);
参数
LPCTSTR lpstrConnection 连接字符串
查看示例
注:该类有个函数SetConnectionString,您可以通过这个函数插入连接字符串。在这种情况下您可以执行如下操作:
- // 程序例子
- //Sample with Connection string for SQL Server
- CADODatabase* pAdoDb = new CADODatabase();
- CString strConnection = _T("");
- strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;"
- "Trusted_Connection=Yes;"
- "Data Source=Access Sql Server;catalog=sampledb");
- pAdoDb->SetConnectionString(strConnection);
- if(pAdoDb->Open())
- DoSomething();
- .
- .
- .
- //Sample with Connection String for Access database
- CADODatabase* pAdoDb = new CADODatabase();
- CString strConnection = _T("");
- strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
- "Data Source=C://VCProjects//ADO//Test//dbTest.mdb");
- pAdoDb->SetConnectionString(strConnection);
- if(pAdoDb->Open())
- {
- DoSomething();
- .
- .
- .
- pAdoDb->Close();
- }
- delete pAdoDb;
CADODatabase::Execute
Excute函数在一个打开的数据库连接中执行一个SQL语句
- // 函数声明
- BOOL Execute(LPCTSTR lpstrExec);
- throw(CADOException);
参数
LPCTSTR lpstrExec - 一个包含需要执行的SQL语句字符串指针
- // 程序例子
- CADODatabase* pAdoDb = new CADODatabase();
- CString strConnection = _T("");
- strConnection = _T("Provider=MSDASQL;"
- "PersistSecurityInfo=False;"
- "Trusted_Connection=Yes"
- "Data Source=Access Sql Server;catalog=sampledb");
- if(pAdoDb->Open(strConnection))
- pAdoDb->Execute("Delete From tblClients Where Cheker = 3");
返回值
假如执行成功,这个函数返回TRUE
CADODatabase::GetRecordsAffected
GetRecordsAffected返回上一次SQL命令执行后影响的记录个数
- // 函数声明
- int GetRecordsAffected();
CADODatabase::GetActiveConnection
GetActiveConnection返回活动连接(当前的连接)
- // 函数声明
- _ConnectionPtr GetActiveConnection();
CADODatabase::GetRecordCount
GetRecordCount返回一个查询中受影响的记录数
- // 函数声明
- DWORD GetRecordCount(_RecordsetPtr m_pRs);
参数
_RecorsetPtr m_Prs -要查询的记录集
CADODatabase::BeginTransaction
调用此函数来初始化一个事务。您调用BeginTransaction以后,当您提交事务后更新才使得您的数据使之生效。
- // 函数声明
- long BeginTransaction();
CADODatabase::CommitTransaction
调用CommitTransaction函数提交事务,比如,保存一组编辑和一个或者多个数据库更新
- // 函数声明
- long CommitTransaction();
CADODatabase::RollbackTransaction
调用RollbackTransaction函数结束当前事务和恢复在事务开始前的所有数据库状况
- // 函数声明
- long RollbackTransaction();
CADODatabase::IsOpen
IsOpen函数返回数据库连接的状态
- // 函数声明
- BOOL IsOpen();
返回值
假如连接的数据库是打开的,这个函数返回TRUE
CADODatabase::Close
Close函数关闭数据库连接
- // 函数声明
- void Close();
CADODatabase::SetConnectionString
使用SetConnectionString您可以插入一个连接字符串
- // 函数声明
- void SetConnectionString(LPCTSTR lpstrConnection);
参数
LPCTSTR lpstrConnection -一个用于打开数据库的连接字符串
见CADODatabase::Open();
CADODatabase::GetConnectionString
GetConnectionString函数返回用来连接数据库的连接字符串
- // 函数声明
- CString GetConnectionString();
CADODatabase::SetConnectionMode
SetConnectionMode函数设置连接模式
- // 函数声明
- void SetConnectionMode(cadoConnectModeEnum nMode);
参数
cadoConnectModeEnum nMode-一个变量,它定义要使用的连接方式。它可以是下列之一:
- CADODatabase::connectModeUnknown
- CADODatabase::connectModeRead
- CADODatabase::connectModeWrite
- CADODatabase::connectModeReadWrite
- CADODatabase::connectModeShareDenyRead
- CADODatabase::connectModeShareDenyWrite
- CADODatabase::connectModeShareExclusive
- CADODatabase::connectModeShareDenyNone
CADODatabase::GetLastError
GetLastError函数返回最后一个错误代码
- // 函数声明
- DWORD GetLastError();
CADODatabase::GetLastErrorString
GetLastErrorString返回最后个错误的字符串
- // 函数声明
- CString GetLastErrorString();
CADORecordset 类
CADORecordset 类封装了一套与_RecordsetPtr智能指针相关的函数
CADORecordset::CADORecordset
创建一个CADORecordset对象
- // 函数声明
- CADODatabase();
- CADORecordset(CADODatabase* pAdoDatabase);
参数
CADODatabase* pAdoDatabase - 一个CADODatabase对象指针
CADORecordset::Open
Open函数打开一个记录集
- // 函数声明
- BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""),
- int nOption = CADORecordset::openUnknown);
- BOOL Open(LPCTSTR lpstrExec = _T(""),
- int nOption = CADORecordset::openUnknown);
参数
_ConnectionPtr mpdb -一个连接指针
LPCTSTR lpstrExec - 一个字符串指针,包含一个SQL SELECT语句
int nOption - 一个整形数,它定义访问模式。这些值如下
- CADORecordset::openUnknown
- CADORecordset::openQuery
- CADORecordset::openTable
- CADORecordset::openStoredProc
返回值
假如执行成功返回TRUE
查看示例
CADORecordset::Execute
Execute函数打开一个记录集
- // 函数声明
- BOOL Execute(CADOCommand* pCommand);
- throw(CADOException);
参数
CADOCommand* pCommand - 一个CADOCommand指针
返回值
假如执行成功返回TRUE
查看示例
CADORecordset::GetQuery;
GetQuery返回包含SELECT关键字的SQL命令字符串
- // 函数声明
- CString GetQuery();
- // 函数声明
- void SetQuery(LPCSTR strQuery);
参数
LPCTSTR strQuery - 一个字符串指针,包含一个SQL SELECT语句
- // 函数声明
- BOOL RecordBinding(CADORecordBinding pAdoRecordBinding);
参数
CADORecordBinding pAdoRecordBinding
CADORecordset::GetRecordCount
GetRecordCount 函数返回可以在记录集中访问的记录数
- // 函数声明
- DWORD GetRecordCount();
CADORecordset::IsOpen
IsOpen 测试记录集是否打开
- // 函数声明
- BOOL IsOpen();
返回值
假如这个记录集没有关闭,这个函数返回TRUE
CADORecordset::Close
Close函数关闭记录集
- // 函数声明
- void Close();
CADORecordset::GetFieldCount
GetRecordCount 函数返回记录集中的字段数目
- // 函数声明
- long GetFieldCount();
- // 函数声明
- BOOL GetFieldValue(LPCTSTR lpFieldName, int nValue);
- BOOL GetFieldValue(int nIndex, int nValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, long lValue);
- BOOL GetFieldValue(int nIndex, long lValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);
- BOOL GetFieldValue(int nIndex, unsigned long ulValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, double dbValue);
- BOOL GetFieldValue(int nIndex, double dbValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, CString strValue,
- CString strDateFormat = _T(""));
- BOOL GetFieldValue(int nIndex, CString strValue,
- CString strDateFormat = _T(""));
- BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime time);
- BOOL GetFieldValue(int nIndex, COleDateTime time);
- BOOL GetFieldValue(LPCTSTR lpFieldName, bool bValue);
- BOOL GetFieldValue(int nIndex, bool bValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);
- BOOL GetFieldValue(int nIndex, COleCurrency cyValue);
- throw(CADOException);
参数
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函数测试字段数据是否为空
- // 函数声明
- BOOL IsFieldNull(LPCTSTR lpFieldName);
- BOOL IsFieldNull(int nIndex);
- throw(CADOException);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据为空,该函数返回TRUE
CADORecordset::IsFieldEmpty
IsFieldEmpty函数测试字段数据是否为空
- // 函数声明
- BOOL IsFieldEmpty(LPCTSTR lpFieldName);
- BOOL IsFieldEmpty(int nIndex);
- throw(CADOException);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
返回值
假如字段数据位空该函数返回TRUE
- // 函数声明
- BOOL IsEof();
返回值
假如当前位置没有包含任何记录,该函数返回TRUE
查看示例
- // 函数声明
- BOOL IsBof();
返回值
假如当前位置是记录的底部,该函数返回TRUE
CADORecordset::MoveFirst
CADORecordset::MoveNext
CADORecordset::MovePrevious
CADORecordset::MoveLast
这些函数使得第一个/下一个/上一个/或者最后个记录集中的记录作为当前记录
- // 函数声明
- void MoveFirst();
- void MoveNext();
- void MovePrevious();
- void MoveLast();
CADORecordset::GetAbsolutePage
CADORecordset::SetAbsolutePage
表示当前记录在那个页
- // 函数声明
- long GetAbsolutePage();
- void SetAbsolutePage(int nPage);
参数
int nPage - 页基数是1
查看示例
CADORecordset::GetPageCount
GetPageCount返回在一个记录集中页的数量
- // 函数声明
- long GetPageCount();
CADORecordset::GetPageSize
CADORecordset::SetPageSize
指示每页有多少记录
- // 函数声明
- long GetPageSize();
- void SetPageSize(int nSize);
- // 程序例子
- CADORecordset* pRs = new CADORecordset(pDb);
- if(pRs->Open("MyBigTable", CADORecordset::openTable))
- {
- pRs->SetPageSize(5);
- for(register int nPageIndex = 1; nPageIndex <= pRs->GetPageCount();
- nPageIndex++)
- {
- pRs->SetAbsolutePage(nPageIndex);
- for(register int nRecNumber = 0; nRecNumber < pRs->GetPageSize();
- nRecNumber++)
- {
- long lVal;
- pRs->GetFieldValue("ID", lVal);
- pRs->MoveNext();
- if(pRs->IsEof())
- break;
- }
- }
- pRs->Close();
- }
- delete pRs;
CADORecordset::GetAbsolutePosition
CADORecordset::SetAbsolutePosition
表示当前记录在记录集中的位置
- // 函数声明
- long GetAbsolutePosition();
- void SetAbsolutePosition(int nPosition);
参数
int nPosition - 移动到的记录集位置
GetAbsolutePosition() 会返回记录的位置或者下面中的一个值
CADORecordset::GetFieldInfo
GetFieldInfo返回一个字段的属性
- // 函数声明
- BOOL GetFieldInfo(LPCTSTR lpFieldName, CAdoFieldInfo* fldInfo);
- BOOL GetFieldInfo(int nIndex, CAdoFieldInfo* fldInfo);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CAdoFieldInfo* fldInfo - 一个返回的字段属性结构体
- // 结构体声明
- struct CADOFieldInfo
- {
- char m_strName[30];
- short m_nType;
- long m_lSize;
- long m_lDefinedSize;
- long m_lAttributes;
- short m_nOrdinalPosition;
- BOOL m_bRequired;
- BOOL m_bAllowZeroLength;
- long m_lCollatingOrder;
- };
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
例子
- // 程序例子
- if(prs->Open("Clients", CADORecordset::openTable))
- {
- CADOFieldInfo pInfo;
- prs->GetFieldInfo("Description", &pInfo);
- if(pInfo.m_nType == CADORecordset::typeVarChar)
- AfxMessageBox("The type Description Field Is VarChar");
- }
- if(prs->Open("TestTable", CADORecordset::openTable))
- {
- CADOFieldInfo* fInfo = new CADOFieldInfo;
- prs.GetFieldInfo(0, fInfo);
- CString strFieldName = fInfo->m_strName;
- prs->Close();
- }
返回值
假如执行成功返回TRUE
CADORecordset::GetChunk
该函数返回所有的,或者部分大文本,二进制数据字段内容
- // 函数声明
- BOOL GetChunk(LPCTSTR lpFieldName, CString& strValue);
- BOOL GetChunk(int nIndex, CString& strValue);
- BOOL GetChunk(LPCTSTR lpFieldName, LPVOID pData);
- BOOL GetChunk(int nIndex, LPVOID pData);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
CString& strValue 一个包含返回数据的字符串指针
LPVOID pData - 一个包含有返回数据的指针
返回值
假如执行成功返回TRUE
查看示例
CADORecordset::AppendChunk
该函数追加数据到一个大的文本或者二进制数据到字段中
- // 函数声明
- BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);
- BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);
- throw(CADOException);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
LPVOID lpData - 一个包含要添加数据到字段的指针
UINT nBytes - 一个无符号整形,指示要插入的数据大小
返回值
假如执行成功返回TRUE
例子
- // 程序例子
- //Sample of AppendChunck
- prs.AddNew();
- prs.SetFieldValue("ID", 5);
- prs.SetFieldValue("Description", "Client 05");
- prs.SetFieldValue("Checker", 1);
- prs.AppendChunk("Document",
- "This Document is the story of Bob and his Friends...", 37);
- prs.Update();
- //Sample of GetChunck
- char data[1024];
- prs.GetChunk("Document", (LPVOID)&data);
CADORecordset::GetString
该函数以字符串的形式返回一个记录
- // 函数声明
- CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull,
- long numRows = 0);
参数
LPCTSTR lpCols - 行分隔符
LPCTSTR lpRows - 列分隔符
LPCTSTR lpNull - NUL值的替代字符串
long numRows - 受影响的列数
CADORecordset::GetLastError
GetLastError函数返回最后一个错误代码
- // 函数声明
- DWORD GetLastError();
CADORecordset::GetLastErrorString
GetLastErrorString函数返回最后一个错误的字符串
- // 函数声明
- CString GetLastErrorString();
CADORecordset::AddNew
AddNew 函数在一个打开的记录集中添加个一个记录
- // 函数声明
- BOOL AddNew();
- throw(CADOException);
返回值
执行成功返回TRUE
查看示例
CADORecordset::Edit
Edit函数允许在一个打开的记录集中更改当前的记录
- // 函数声明
- void Edit();
CADORecordset::Delete
Delete函数在一个打开的记录集中删除当前的的记录
- // 函数声明
- BOOL Delete();
返回值
执行成功返回TRUE
CADORecordset::Update
Update函数在当前记录中更新待更新的数据
- // 函数声明
- BOOL Update();
- throw(CADOException);
返回值
执行成功返回TRUE
查看示例
CADORecordset::CancelUpdate
CancelUpdate函数在一个打开的记录集中取消任何待更新的数据
- // 函数声明
- void CancelUpdate();
CADORecordset::SetFieldValue
SetFieldValue函数设置一个字段的值
- // 函数声明
- BOOL SetFieldValue(int nIndex, int nValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);
- BOOL SetFieldValue(int nIndex, long lValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);
- BOOL SetFieldValue(int nIndex, unsigned long ulValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long ulValue);
- BOOL SetFieldValue(int nIndex, double dblValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);
- BOOL SetFieldValue(int nIndex, CString strValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);
- BOOL SetFieldValue(int nIndex, COleDateTime time);
- BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);
- BOOL SetFieldValue(int nIndex, bool bValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);
- BOOL SetFieldValue(int nIndex, COleCurrency cyValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);
参数
LPCTSTR lpFieldName - 一个包含字段名称的字符串指针
int nIndex - 一个在记录集的所有字段集中以零为基准,需要查看的索引
int nValue - 一个包含字段值的对象指针
long lValue - 一个包含字段值的对象指针
unsigned long lValue - 一个包含字段值的对象指针
double dbValue - 一个包含字段值的对象指针
CString strValue - 一个包含字段值的对象指针
COleDateTime time - 一个包含字段值的对象指针
bool bValue - 一个包含字段值的对象指针
COleCurrency cyValue - 一个包含字段值的对象指针
返回值
执行成功返回TRUE
查看示例
例子
- // 程序例子
- CADORecordset* prs = new CADORecordset(m_pAdoDb);
- prs->Open("Test", openTable);
- prs->AddNew();
- prs->SetFieldValue(0, "dataU");
- prs->SetFieldValue(1, "data01");
- prs->SetFieldValue(2, (long)51000);
- COleDateTime time = COleDateTime(2001,6,15, 10, 8, 30);
- prs->SetFieldValue(3, time);
- prs->Update();
- prs->Close();
- delete prs;
CADORecordset::Find
Find 函数使用比较操作符从当前位置查找一个字符串在一个打开的记录集中的位置
- // 函数声明
- BOOL Find(LPCTSTR lpFind,
- int nSearchDirection = CADORecordset::searchForward);
参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
int nSearchDirection - 一个表示操作类型的值,可能取值是:
CADORecordset::searchForward - 向后查找
CADORecordset::searchBackward - 向后查找
返回值
执行成功返回TRUE
例子
- // 程序例子
- if(prs.Find("Field0 LIKE 'dataU%'"))
- {
- prs.Delete();
- while(prs.FindNext())
- prs.Delete();
- }
CADORecordset::FindFirst
FindFirst函数从记录集起始位置开始查找一个字符串在一个打开的记录集中的所在位置
- // 函数声明
- BOOL FindFirst(LPCTSTR lpFind);
参数
LPCTSTR lpFind - 一个表示用来在记录中查找的字符串
返回值
执行成功返回TRUE
CADORecordset::FindNext
FindNext 使用类似FindFirst或者Find的操作,从记录集最后位置开始查找一个字符串在一个打开的记录集中的所在位置
- // 函数声明
- BOOL FindNext();
返回值
执行成功返回TRUE
查看示例
CADORecordset::GetBookmark
GetBookmark函数获取在其他时间保存的记录位置
- // 函数声明
- BOOL GetBookmark();
返回值
执行成功返回TRUE
CADORecordset::SetBookmark
SetBookmark函数保存当前记录的位置
- // 函数声明
- void SetBookmark();
返回值
执行成功返回TRUE
CADORecordset::SetFilter
SetFilter在一个打开的记录集中设置一个过滤器
- // 函数声明
- BOOL SetFilter(LPCTSTR strFilter);
- throw(CADOException);
参数
LPCTSTR strFilter - 一个由一个或者多个用AND或者OR操作关联在一起的个别从句组成的字符串
返回值
执行成功返回TRUE
例子
- // 程序例子
- CADORecordset* pRs = new CADORecordset(pDb);
- if(pRs->Open("tblTest", CADORecordset::openTable))
- {
- CString strFilter = _T("LastName = 'Smith' And Age > 30");
- pRs->SetFilter(strFilter);
- .
- .
- pRs->Close();
- }
- delete pRs
CADORecordset::SetSort
SetSort函数在一个CADORecordset对象中为所有的记录设置分类排序
- // 函数声明
- BOOL SetSort(LPCTSTR lpstrCriteria);
- throw(CADOException);
参数
LPCTSTR lpstrCriteria - 一个包含ORDER BY从句SQL语句的字符串
返回值
执行成功返回TRUE
CADORecordset::GetRecordset
GetRecordset函数返回一个指向打开的记录集的指针
- // 函数声明
- _RecordsetPtr GetRecordset();
CADORecordset::GetActiveConnection
GetActiveConnection返回活动连接
- // 函数声明
- _ConnectionPtr GetActiveConnection();
CADORecordset::Clone
Clone函数从一个现有的CADORecordset对象中创建一个完全一样的CADORecordset对象
- // 函数声明
- BOOL Clone(CADORecordset pAdoRecordset);
- throw(CADOException);
参数
CADORecordset pAdoRecordset 是一个现有的CADORecordset对象
返回值
执行成功返回TRUE
例子
- // 程序例子
- CADORecordset m_pRs; //Original Recordset
- CADORecordset RS; //Duplicate Recordset
- CADORecordset* pRs = CADORecordset(m_pDb);
- if(pRs->Open("tblTest", CADORecordset::openTable)) //Open the Original
- Recordset
- {
- pRs->Clone(RS); //Create the clone of the original Recordset
- long lClonRecs = RS.GetRecordCount();
- long lOrigRecs = m_pRs->GetRecordCount();
- .
- .
- RS.Close();
- pRs->Close();
- }
- delete pRs;
CADORecordset::SaveAsXML
SaveAsXML 函数保存打开的记录集到一个XML格式的文件中。
- // 函数声明
- BOOL SaveAsXML(LPCTSTR lpstrXMLFile);<br />
参数
LPCTSTR strXMLFile - 一个字符串,指示将保存记录集的完整的路径和文件名
返回值
执行成功返回TRUE
CADORecordset::OpenXML
OpenXML函数打开一个XML文件格式到记录集中。
- // 函数声明
- BOOL OpenXML(LPCTSTR lpstrXMLFile);
参数
LPCTSTR strXMLFile - 一个字符串,指示将要打开的完整的路径和文件名的XML文件
返回值
执行成功返回TRUE
例子
- // 程序例子
- CADORecordset* pRs = CADORecordset(pDB);
- if(prs->OpenXML("C://My.XML"))
- {
- CString strClient = _T("");
- double dblVal = 0;
- long lrecs = prs->GetRecordCount();
- if(!prs->IsEof())
- prs->MoveFirst();
- prs->GetFieldValue("Budget", dblVal);
- prs->GetFieldValue("ClientName", strClient);
- prs->Close();
- }
//函数声明
CADORecordset::OpenSchema
OpenSchema函数从提供者获取数据库图表信息
- // 函数声明
- BOOL OpenSchema(int nSchema, LPCTSTR SchemaID = _T(""));
- throw(CADOException);
参数
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. | CONSTRAINT_ CATALOG *CONSTRAINT_ SCHEMA *CONSTRAINT_NAME |
schemaCatalogs | 1 | Returns the physical attributes associated with catalogs accessible from the DBMS. | CATALOG_NAME |
schemaCharacterSets | 2 | Returns the character sets defined in the catalog that are accessible to a given user. | 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. | CONSTRAINT_ CATALOG *CONSTRAINT_ SCHEMA *CONSTRAINT_NAME |
schemaCollations | 3 | Returns the character collations defined in the catalog that are accessible to a given user. | 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. | 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. | 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. | 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. | 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. | 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). | CATALOG_NAME SCHEMA_NAME CUBE_NAME |
schemaDBInfoKeywords | 30 | Returns a list of provider-specific keywords. | <None> |
schemaDBInfoLiterals | 31 | Returns a list of provider-specific literals used in text commands. | <None> |
schemaDimensions | 33 | Returns information about the dimensions in a given cube. It has one row for each dimension. | 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. | 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. | 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. | 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. | 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. | 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. | CATALOG_NAME SCHEMA_NAME CUBE_NAME MEASURE_NAME MEASURE_ UNIQUE_NAME * |
schemaMembers | 38 | Returns information about the available members. | 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. | PK_TABLE_CATALOG PK_TABLE_SCHEMA PK_TABLE_NAME |
schemaProcedureColumns | 29 | Returns information about the columns of rowsets returned by procedures. | PROCEDURE_ CATALOG *PROCEDURE_SCHEMA PROCEDURE_NAME COLUMN_NAME |
schemaProcedureParameters | 26 | Returns information about the parameters and return codes of procedures. | PROCEDURE_ CATALOG *PROCEDURE_SCHEMA PROCEDURE_NAME PARAMETER_NAME |
schemaProcedures | 16 | Returns the procedures defined in the catalog that are owned by a given user. | PROCEDURE_ CATALOG *PROCEDURE_SCHEMA PROCEDURE_NAME PROCEDURE_TYPE |
schemaProperties | 37 | Returns information about the available properties for each level of the dimension. | 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. | DATA_TYPE BEST_MATCH |
schemaReferentialConstraints | 9 | Returns the referential constraints defined in the catalog that are owned by a given user. | CONSTRAINT_ CATALOG *CONSTRAINT_ SCHEMA *CONSTRAINT_NAME |
schemaSchemata | 17 | Returns the schemas (database objects) that are owned by a given user. | 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. | <None> |
schemaStatistics | 19 | Returns the statistics defined in the catalog that are owned by a given user. | TABLE_CATALOG TABLE_SCHEMA TABLE_NAME |
schemaTableConstraints | 10 | Returns the table constraints defined in the catalog that are owned by a given user. | 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_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. | 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. | 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. | 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_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_CATALOG VIEW_SCHEMA VIEW_NAME |
返回值
执行成功返回TRUE
例子
- // 程序例子
- try
- {
- CADODatabase* pdb = new CADODatabase();
- if(pdb.Open("Data Source=sysdevpdc;Provider="
- "MSOLAP;Initial Catalog=Foodmart 2000"))
- {
- CADORecordset prs(&pdb);
- if(prs.OpenSchema(CADORecordset::schemaMeasures))
- {
- while(!prs.IsEof())
- {dset::schemaMeasures))
- {
- while(!prs.IsEof())
- {
- CString strValue;
- CString strUniqueName;
- CString strSqlColumnName;
- int nDataType = 0;
- int nValue = 0;
- prs.GetFieldValue("CUBE_NAME", strValue);
- prs.GetFieldValue("MEASURE_NAME", strValue);
- prs.GetFieldValue("MEASURE_AGGREGATOR", nValue);
- prs.GetFieldValue("MEASURE_UNIQUE_NAME",
- strUniqueName);
- prs.GetFieldValue("MEASURE_NAME_SQL_COLUMN_NAME",
- strSqlColumnName);
- prs.GetFieldValue("DATA_TYPE", nDataType);
- prs.MoveNext();
- }
- }
- prs.Close();
- }
- }
- catch(CADOException &e)
- {
- ...
- }
//函数声明
CADORecordset::Requery
Requery函数重新刷新一个打开记录集
- // 函数声明
- BOOL Requery();
- throw(CADOException);
- CADODatabase* pAdoDb = new CADODatabase();
- CString strConnection = "";
- strConnection = _T("Provider=MSDASQL;"
- "PersistSecurityInfo=False;Trusted_Connection=Yes
- Data Source=Access Sql Server;catalog=sampledb");
- if(pAdoDb->Open((LPCTSTR)strConnection))
- {
- CString strQry = _T("");
- int numRecords;
- strQry.Format(_T("sp_StoreClientFields_ps '%s', %d"),
- (LPCTSTR)strParam1, nParam2);
- CADORecordset* pRs = new CADORecordset(pAdoDb);
- if(!pRs->Open((LPCTSTR)strQry))
- {
- delete pRs;
- delete pAdoDb;
- return FALSE
- }
- numRecords = pRs->GetRecordCount();
- while(!pRs->IsEof())
- {
- CString strVal = _T("");
- int nVal = 0;
- //Get Numeric Field Value
- pRs->GetFieldValue("NumField1", nVal)
- //Get String Field Data
- pRs->GetFieldValue("StrField..", strVal)
- DoSomething(nVal, strVal);
- pRs->MoveNext();
- }
- pRs->Close();
- }
- else
- return FALSE;
CADOParameter类
CADOParameter类封装了一套_ParameterPtr智能指针相关的函数
CADOParameter::CADOParameter
创建一个CADOParameter对象
- // 函数声明
- CADOParameter(int nType, long lSize = 0, int nDirection = paramInput,
- CString strName = _T(""));
参数
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对象的值
- // 函数声明
- BOOL SetValue(int nValue);
- BOOL SetValue(long lValue);
- BOOL SetValue(double dbValue);
- BOOL SetValue(CString strValue);
- BOOL SetValue(COleDateTime time);
- BOOL SetValue(_variant_t vtValue);
参数
* int nValue - 一个包含参数值的整形
* long lValue - 一个包含参数值的长整形
* double dbValue - 一个包含参数值的双精度浮点数
* CString strValue - 一个包含参数值的字符串
* COleDateTime time - 一个包含参数值的时间
* _variant_t vtValue - 一个包含参数值的变体变量
返回值
执行成功返回TRUE
查看示例
CADOParameter::SetPrecision
SetPrecision函数设置CADOParameter对象对象的精度
- // 函数声明
- void SetPrecision(int nPrecision);
CADOParameter::SetScale
SetScale 函数设置CADOParameter对象对象的刻度
- // 函数声明
- void SetScale(int nScale);
CADOParameter::GetValue
GetValue函数返回CADOParameter对象对象的值
- // 函数声明
- BOOL GetValue(int& nValue);
- BOOL GetValue(long& lValue);
- BOOL GetValue(double& dbValue);
- BOOL GetValue(CString& strValue, CString strDateFormat = _T(""));
- BOOL GetValue(COleDateTime& time);
- BOOL GetValue(_variant_t& vtValue);
参数
* int& nValue - 一个将要储存参数值的整形引用
* long& lValue - 一个将要储存参数值的长整形引用
* double& dbValue - 一个将要储存参数值的双精度浮点数引用
* CString& strValue - 一个将要储存参数值的字符串引用
* CString strDateFormat = _T("") - 一个格式化字符串,类似strftime格式化的字符串
* COleDateTime& time - 一个将要储存参数值的时间引用
* _variant_t& vtValue - 一个将要储存参数值的变体变量引用
返回值
执行成功返回TRUE
查看示例
CADOParameter::SetName
SetName函数设置CADOParameter对象名称
- // 函数声明
- CString SetName(CString strName);
参数
CString strName - 一个指定参数名字的字符串
CADOParameter::GetName
GetName函数返回CADOParameter对象名称
- // 函数声明
- CString GetName();
CADOCommand::GetType
GetType函数返回CADOParameter对象的类型
- // 函数声明
- int GetType();
CADOParameter::GetParameter
GetParameter函数返回一个_Parameter对象指针
- // 函数声明
- _ParameterPtr GetParameter();
CADOCommand 类
CADOCommand类封装了一个套_CommandPtr智能指针相关的函数
CADOCommand::CADOCommand
创建一个CADOCommand对象
- // 函数声明
- CADOCommand(CADODatabase* pAdoDatabase, CString strCommandText = _T(""),
- int nCommandType = typeCmdStoredProc);
参数
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 函数
- // 函数声明
- BOOL AddParameter(CADOParameter* pAdoParameter);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, int nValue);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, long lValue);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, double dblValue, int nPrecision = 0,
- int nScale = 0);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, CString strValue);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, COleDateTime time);
- BOOL AddParameter(CString strName, int nType, int nDirection,
- long lSize, _variant_t vtValue, int nPrecision = 0,
- int nScale = 0);
参数
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对象的命令文本
- // 函数声明
- void SetText(CString strCommandText);
参数
CString strCommandText - 一个字符串,指出命令的文本
CADOCommand::GetText
GetText函数返回CADOCommand对象的命令文本
- // 函数声明
- CString GetText();
CADOCommand::SetType
SetType函数设置CADOCommand对象的类型
- // 函数声明
- void SetType(int nCommandType);
参数
int nCommandType - 一个整形值,指出命令的类型
CADOCommand::GetType
GetType函数返回CADOCommand对象的类型
- // 函数声明
- int GetType();
CADOCommand::GetCommand
GetCommand函数返回一个Command指针
- // 函数声明
- _CommandPtr GetCommand();
CADOCommand::Execute
Execute 函数执行命令的文本
- // 函数声明
- BOOL Execute();
返回值
执行成功返回TRUE
CADOCommand::GetRecordsAffected
GetRecordsAffected函数返回最后个命令执行后影响的记录个数
- // 函数声明
- int GetRecordsAffected();
- // 程序例子
- //SQL SCRIPT...
- Create Procedure sp_OutputTest
- @IN1 int,
- @OutInt int Output,
- @OutChar varchar(20) Output
- As
- SELECT
- @OutChar = 'Hello World'
- SELECT
- @OutInt = 10 * @IN1
- return (90)
- GO
- //Visual C++ Code...
- CADOParameter pParamRetVal(CADORecordset::typeInteger, sizeof(int),
- CADOParameter::paramReturnValue);
- CADOParameter pParamIn(CADORecordset::typeInteger, sizeof(int));
- CADOParameter pParamOutInt(CADORecordset::typeInteger, sizeof(int),
- CADOParameter::paramOutput);
- CADOParameter pParamOutChar(CADORecordset::typeChar, sizeof(char) * 20,
- CADOParameter::paramOutput);
- pParamIn.SetValue(2);
- CADOCommand pCmd(&pDb, "sp_OutputTest");
- pCmd.AddParameter(&pParamRetVal);
- pCmd.AddParameter(&pParamIn);
- pCmd.AddParameter(&pParamOutInt);
- pCmd.AddParameter(&pParamOutChar);
- CADORecordset* prs = new CADORecordset(pDb);
- if(pRs->Execute(&pCmd))
- {
- int nVal = 0;
- int nRetVal = 0;
- CString str = _T("");
- pParamRetVal.GetValue(nRetVal);
- pParamOutInt.GetValue(nVal);
- pParamOutChar.GetValue(str);
- }
- delete pRS;
CJectEngine类
CJectEngine类封装了一套_RecordsetPtr智能指针相关的函数
CJetEngine::CompactDatabase
压缩一个Access 数据库
- // 函数声明
- BOOL CompactDatabase(CString strDatabaseSource, CString strDatabaseDestination);
参数
CString strDatabaseSource - 一个源数据库连接字符串
CString strDatabaseDestination - 一个目的数据库连接字符串
注:
连接字符串必须是这样的:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/the Database Path"
返回值
执行成功返回TRUE
例子
- // 程序例子
- CString strCompactedDBConnection;
- CString strConnection;
- CString strCompactedDBPath = _T("C://My Projects//Database//SampleDB.tmp");
- CString strDatabasePath = _T("C://My Projects//Database//SampleDB.mdb");
- strCompactedDBConnection.Format("Provider=Microsoft.Jet.OLEDB."
- "4.0;Data Source=%s", strCompactedDBPath.GetBuffer(0));
- strConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",
- strDatabasePath.GetBuffer(0));
- if(CJetEngine::CCompactDatabase(strConnection, strCompactedDBConnection))
- {
- ::CopyFile(strCompactedDBPath.GetBuffer(0),
- strDatabasePath.GetBuffer(0), FALSE);
- }
CADOException类
CADOException类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因
CADOException::CADOException
创建一个CADOException对象
- // 函数声明
- CADOExcpetion();
检索ADO错误信息
构建一个CADOException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来检索关于这个错误的信息
例子
- // 程序例子
- try
- {
- if(pDb.Open(_T("Provider=Microsoft.JET.OLEDB.4.0;")
- _T("Data source = c://vc projects//ado//dbTest.mdb;")))
- {
- CADORecordset pRS(&pDb);
- if(pRS.Open("tbltest", CADORecordset::openTable))
- {
- pRS.SetSort("Descriptions");
- .
- .
- .
- }
- pRS.Close();
- }
- }
- catch(CADOException &e)
- {
- AfxMessageBox(e.GetErrorMessage());
- }
CADOException::GetErrorMessage
- // 函数声明
- CString GetErrorMessage() const;
返回值
返回错误的描述
查看示例
- // 函数声明
- long GetError();
返回值
返回错误代码
- // 函数声明
- void SetError(long lErrorCode = 0);
- void SetErrorMessage(LPCSTR lpstrError = _T(""));
参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串
COLEDBDataLink类
COLEDBDataLink 类是一个工具类,用来创建和编辑数据链
COLEDBDataLink::COLEDBDataLink
创建一个COLEDBDataLink 对象
- // 函数声明
- COLEDBDataLink();
- // 函数声明
- CString New(HWND hWnd = NULL);
- throw(COLEDBException);
参数
HWND hWnd = NULL - 父窗口句柄
返回值
返回一个字符串告之相应的连接字符串创建的连接
查看示例
- // 函数声明
- void Edit(LPCSTR lpstrConnectionString, HWND hWnd);
- throw(COLEDBException);
参数
LPCSTR lpstrConnectionString
HWND hWnd - 父窗口句柄
例子
- // 函数声明
- //程序例子
- COLEDBDataLink dtlnk;
- try
- {
- dtlnk.Edit("Provider=Microsoft.JET.OLEDB.4.0;Data source"
- " = c://vc projects//ado//dbTest.mdb;", this->m_hWnd);
- }
- catch(COLEDBException &e)
- {
- AfxMessageBox(e.GetErrorMessage());
- }
COLEDBException类
COLEDBException 类表示异常情况,该类包含的公共数据成员可以用来确定异常的原因
OLEDBException::COLEDBException
创建一个COLEDBException对象
- // 函数声明
- COLEDBException();
检索ODEDB错误信息
构建一个COLEDBException 对象
通过异常对象,调用任何异常对象的GetErrorMesaage或者GetError 成员函数来接收关于这个错误的信息
例子
- // 程序例子
- CADODatabase pDb;
- COLEDBDataLink dtlnk;
- try
- {
- pDb.Open(dtlnk.New(this->m_hWnd));
- }
- catch(COLEDBException &e)
- {
- AfxMessageBox(e.GetErrorMessage());
- }
OLEDBException::GetErrorMessage
- // 函数声明
- CString GetErrorMessage() const;
返回值
返回错误的描述
查看示例
- // 函数声明
- long GetError();
返回值
返回错误代码
- // 函数声明
- void SetError(long lErrorCode = 0);
- void SetErrorMessage(LPCSTR lpstrError = _T(""));
参数
long lErrorCode = 0 - 一个包含错误代码的长整形值
LPCSTR lpstrError = _T("") - 一个包含错误描述的字符串
如何把CADORecordset与微软的DataGrid控件进行绑定;
第一:您需要添加微软的DataGrid控件到您的程序中
第二:用CADORecordset::GetRecordset函数申请来给数据控件类的SetRefDataSource 函数使用
- // 程序例子
- if(m_pRs.Open("tblTest", CADORecordset::openTable))
- {
- //m_datagridctrl is the CDataGrid Class...
- m_datagridctrl.SetCaption("Clients");
- m_datagridctrl.SetRefDataSource(NULL);
- m_datagridctrl.SetRefDataSource((LPUNKNOWN)m_pRs.GetRecordset());
- m_datagridctrl.Refresh();
- }
涉及到如何添加一个数据控件(微软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类型的。
- // 程序例子
- //Visual C++ Sample
- CADOParameter pParamRet(CADORecordset::typeInteger, sizeof(int),
- CADOParameter::paramReturnValue);
- CADOParameter pParamInChar(CADORecordset::typeChar, sizeof(char) * 40,
- CADOParameter::paramInput);
- CADOParameter pParamID(CADORecordset::typeInteger, sizeof(int));
- CString strUUID = CString("{B6B83A8C-F92C-4FA7-9641-631143E6056C}");
- pParamInChar.SetValue(strUUID);
- pParamID.SetValue(1);
- CADOCommand pCmd(&m_pDB, "sp_UUIDTest");
- pCmd.AddParameter(&pParamRet);
- pCmd.AddParameter(&pParamInChar);
- pCmd.AddParameter(&pParamID);
- if(pRs.Execute(&pCmd))
- {
- int nVal = 0;
- pParamRet.GetValue(nVal);
- }
- // SQL SCRIPT
- Create Procedure sp_UUIDTest
- @UUID uniqueidentifier = NULL,
- @ID integer
- AS
- UPDATE
- systable01
- SET
- UUID = @UUID
- WHERE
- sysfield00 = @ID
- if @@Error = 0
- return 1
- else
- return 99
- GO
ADO与ADOX在一起
我每天收到几个邮件问我如何是使用ADO与ADOX类一起工作。答案是,现在现在从ADO2.10版本后,您可以使用两种类型类一起工作。您必须包含每个类头文件和CPP文件,然后在该项目中包含头文件
注意
证实包含头文件必须按如下顺序是很重要的,首先是ADOX类头文件,然后才是ADO类头文件。
- // 包含头文件
- #include <adox.h>
- #include <ado2.h>
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热情
工作:设计师
公司名称:花旗集团
国籍:阿根廷