为了方便的操作ADO,这里提供4个类:CADODatabase,CADORecordset,CADOParameter,CADOCommand ,下面对类的成员作一介绍。
B.1 CADODatabase类函数介绍
CADODatabase类包含关于_ConnectionPtr的函数集合。
// 打开一个数据库连接
BOOL CADODatabase::Open
(
LPCTSTR lpstrConnection = _T("");//连接字符串
)
示例:
// 访问SQL Server示例
CADODatabase pAdoDb;
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();
// 访问Access示例
CADODatabase pAdoDb;
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();
// 对打开的数据库执行SQL语句
BOOL CADODatabase::Execute
(
LPCTSTR lpstrExec //执行字符串
)
示例:
CADODatabase pAdoDb;
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");
// 返回最后一条SQL语句影响的记录数目
int CADODatabase::GetRecordsAffected()
// 返回活动的连接
_ConnectionPtr CADODatabase::GetActiveConnection()
// 返回查询中影响的记录数目
DWORD CADODatabase::GetRecordCount
(
_RecordsetPtr m_pRs //记录集
)
// 提交一个事务
long CADODatabase::BeginTransaction()
// 结束目前的事务并且恢复所有数据库回到事务开始时的状态
long CADODatabase::RollbackTransaction()
// 数据库是否打开
BOOL CADODatabase::IsOpen()
// 关闭目前的数据库连接
void CADODatabase::Close()
// 插入连接字符串
void CADODatabase::SetConnectionString
(
LPCTSTR lpstrConnection) //连接字符串
)
// 返回连接字符串
CString CADODatabase::GetConnectionString()
// 得到最后一次错误的代码
DWORD CADODatabase::GetLastError()
// 返回最后一次的错误字符串
CString CADODatabase::GetLastErrorString()
B.2 CADORecordset类函数介绍
CADORecordset类包含关于_RecordsetPtr的函数集合。
// 打开一个记录集
BOOL CADORecordset::Open
(
_ConnectionPtr mpdb, // 连接指针
LPCTSTR lpstrExec = _T(""), // 包含SQL选择状态的字符串指针
int nOption = CADORecordset::openUnknown //定义接近模式
// 包含 CADORecordset::openUnknown
// 包含 CADORecordset::openQuery
// 包含 CADORecordset::openTable
// 包含 CADORecordset::openStoredProc
)
BOOL CADORecordset::Open
(
LPCTSTR lpstrExec = _T(""),
int nOption = CADORecordset::openUnknown
)
// 执行记录集
BOOL CADORecordset::Execute
(
CADOCommand* pCommand // CADOCommand指针
)
// 返回查询字符串
CString CADORecordset::GetQuery
// 设置查询字符串
void CADORecordset::SetQuery
(
LPCSTR strQuery // 查询字符串
)
// 返回记录集的记录数
DWORD CADORecordset::GetRecordCount()
// 判断记录集是否打开
BOOL CADORecordset::IsOpen()
// 关闭记录集
void CADORecordset::Close()
// 返回记录集中的字段数目
long CADORecordset::GetFieldCount()
// 返回某字段的值
BOOL CADORecordset::GetFieldValue
// 某字段是否为NULL
BOOL CADORecordset::IsFieldNull
(
LPCTSTR lpFieldName // 字段名字
)
BOOL CADORecordset::IsFieldNull
(
int nIndex // 字段索引
)
// 某字段是否为空
BOOL CADORecordset::IsFieldEmpty
(
LPCTSTR lpFieldName // 字段名字
)
BOOL CADORecordset::IsFieldEmpty
(
int nIndex // 字段索引
)
// 判断记录集当前位置是否没记录
BOOL CADORecordset::IsEof()
// 判断是否在记录集的顶部
BOOL CADORecordset::IsBof()
// 移动记录
void CADORecordset::MoveFirst
void CADORecordset::MoveNext
void CADORecordset::MovePrevious
void CADORecordset::MoveLast
// 得到和指定目前记录在哪一页
long CADORecordset::GetAbsolutePage()
void CADORecordset::SetAbsolutePage
(
int nPage //从1开始的页数
)
// 返回记录集页数
long CADORecordset::GetPageCount()
// 设置每页记录的数目
long CADORecordset::GetPageSize()
void CADORecordset::SetPageSize
(
int nSize //记录数目
)
示例:
CADORecordset pRs(&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();
}
// 指示记录集中记录的位置
long CADORecordset::GetAbsolutePosition()
void CADORecordset::SetAbsolutePosition
(
int nPosition //记录集中移动到的位置
)
// 返回字段的属性
BOOL CADORecordset::GetFieldInfo
(
LPCTSTR lpFieldName, // 字段名字
CAdoFieldInfo* fldInfo // 信息结构
)
BOOL CADORecordset::GetFieldInfo
(
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;
};
示例:
CADORecordset prs(&m_pDb);
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();
}
// 返回大数据字段对象
BOOL CADORecordset::GetChunk
(
LPCTSTR lpFieldName, //字段名字
CString& strValue //包含字符串数据指针
)
BOOL CADORecordset::GetChunk
(
int nIndex, //字段索引
CString& strValue
)
BOOL CADORecordset::GetChunk
(
LPCTSTR lpFieldName,
LPVOID pData //包含对象数据指针
)
BOOL CADORecordset::GetChunk
(
int nIndex,
LPVOID pData
)
// 将数据附加到字符和二进制字段对象上
BOOL CADORecordset::AppendChunk
(
LPCTSTR lpFieldName, //字段名字
LPVOID lpData, //数据对象
UINT nBytes //插入的数据大小
)
BOOL CADORecordset::AppendChunk
(
int nIndex, //字段索引
LPVOID lpData,
UINT nBytes
)
示例:
// 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);
// 将记录集作为字符串返回
CString CADORecordset::GetString
(
LPCTSTR lpCols, // 列分割符
LPCTSTR lpRows, // 行分隔符
LPCTSTR lpNull, // 表达一个NULL值
long numRows = 0 // 影响的行数目
)
// 返回最后一个错误代码
DWORD CADORecordset::GetLastError()
// 返回最后一个错误字符串
CString CADORecordset::GetLastErrorString()
// 在打开的记录集增加一条记录
BOOL CADORecordset::AddNew()
// 允许修改一条记录
void CADORecordset::Edit()
// 删除当前的记录
BOOL CADORecordset::Delete()
// 更新当前记录中的更新操作
BOOL CADORecordset::Update()
// 取消当前更新操作
void CADORecordset::CancelUpdate()
// 设置字段值
BOOL CADORecordset::SetFieldValue
示例:
CADORecordset prs(&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();
// 定位字符串
BOOL CADORecordset::Find
(
LPCTSTR lpFind, // 用来定位记录的字符串
int nSearchDirection // 查找方向
// CADORecordset::searchForward 向前
// CADORecordset::searchBackward 向后
)
示例:
if(prs.Find("Field0 LIKE 'dataU%'"))
{
prs.Delete();
while(prs.FindNext())
prs.Delete();
}
// 定位字符串
BOOL CADORecordset::FindFirst
(
LPCTSTR lpFind //用来定位记录的字符串
)
// 从上一位置开始查找字符串
BOOL CADORecordset::FindNext()
// 存储当前记录位置
BOOL CADORecordset::GetBookmark()
// 返回存储的记录位置
void CADORecordset::SetBookmark()
// 设置数据滤波器
BOOL CADORecordset::SetFilter
(
LPCTSTR strFilter //用多个与或连接的字符串
)
示例:
CADORecordset m_pRs;
m_pRs = CADORecordset(&m_pDb);
if(m_pRs.Open("tblTest", CADORecordset::openTable))
{
CString strFilter = _T("LastName = 'Smith' And Age > 30");
m_pRs.SetFilter(strFilter);
m_pRs.Close();
}
// 设置记录集的排队顺序
BOOL CADORecordset::SetSort
(
LPCTSTR lpstrCriteria //SQL顺序字符串
)
// 返回打开记录集的指针
_RecordsetPtr CADORecordset::GetRecordset()
//复制CADORecordset对象
BOOL CADORecordset::Clone
(
CADORecordset pAdoRecordset //现存的CADORecordset对象
)
示例:
CADORecordset m_pRs; //Original Recordset
CADORecordset RS; //Duplicate Recordset
m_pRs = CADORecordset(&m_pDb);
if(m_pRs.Open("tblTest", CADORecordset::openTable)) //Open the Original
Recordset
{
m_pRs.Clone(RS); //Create the clone of the original Recordset
long lClonRecs = RS.GetRecordCount();
long lOrigRecs = m_pRs.GetRecordCount();
RS.Close();
m_pRs.Close();
}
//存储记录集到XML文件
BOOL CADORecordset::SaveAsXML
(
LPCTSTR lpstrXMLFile //文件位置
)
//打开XML文件
BOOL CADORecordset::OpenXML
(
LPCTSTR lpstrXMLFile //文件位置
)
示例:
CADORecordset pRs;
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();
}
B.3 CADOParameter类函数介绍
CADOParameter类包含关于_ParameterPtr的函数集合。
// 构造函数
CADOParameter::CADOParameter
(
int nType, //明确CADOParameter对象的数据类型
long lSize = 0, //明确参数值的最大长度
int nDirection = paramInput, //明确CADOParameter对象的方向
// CADOParameter::paramUnknown 参数方向未知
// CADOParameter::paramInput 表示输入参数
// CADOParameter::paramOutput 表示输出参数
// CADOParameter::paramInputOutput 表示输入输出参数
// CADOParameter::paramReturnValue 表示返回值
CString strName = _T("") // CADOParameter对象的名字
)
//设置CADOParameter对象值
BOOL CADOParameter::SetValue
(
int nValue //整型
)
BOOL CADOParameter::SetValue
(
long lValue //长整型
)
BOOL CADOParameter::SetValue
(
double dbValue //双精度型
)
BOOL CADOParameter::SetValue
(
CString strValue //字符串型
)
BOOL CADOParameter::SetValue
(
COleDateTime time //时间型
)
BOOL CADOParameter::SetValue
(
_variant_t vtValue //可变换型
)
// 设置CADOParameter对象的尺度
void CADOParameter::SetPrecision
(
int nPrecision //尺度
)
// 设置CADOParameter对象的精度
void CADOParameter::SetPrecision
(
int nPrecision //精度
)
// 返回CADOParameter对象的值
BOOL CADOParameter::GetValue
(
int& nValue //整型
)
BOOL CADOParameter::GetValue
(
long& lValue //长整型
)
BOOL CADOParameter::GetValue
(
double& dbValue //双精度型
)
BOOL CADOParameter::GetValue
(
CString& strValue, //字符串型
CString strDateFormat = _T("")
)
BOOL CADOParameter::GetValue
(
COleDateTime& time //时间型
)
BOOL CADOParameter::GetValue
(
_variant_t& vtValue //可变换型
)
// 设置对象名字
CString CADOParameter::SetName
(
CString strName //名字
)
// 返回对象名字
CString CADOParameter::GetName
// 返回对象类型
int CADOParameter::GetType()
// 返回对象指针
_ParameterPtr CADOParameter::GetParameter
B.4 CADOCommand类函数介绍
CADOCommand类包含关于_CommandPtr的函数集合。
// 构造函数
CADOCommand::CADOCommand
(
CADODatabase* pAdoDatabase, // CADODatabase对象指针
CString strCommandText = _T(""), //CADODatabase对象的字符串
int nCommandType = typeCmdStoredProc //CADODatabase对象类型
// CADOCommand::typeCmdText 将strCommandText作为命令字符定义或存储过程
// CADOCommand::typeCmdTable 将strCommandText作为表名,该表的列由内部SQL查询返回
// CADOCommand::typeCmdTableDirect将strCommandText作为表名,所有列返回
// CADOCommand::typeCmdStoredProc 将strCommandText存储过程名字
// CADOCommand::typeCmdUnknown 命令类型未知
// CADOCommand::typeCmdFile strCommandText作为文件名字
)
// 加参数
BOOL CADOCommand::AddParameter
// 设置命令文本
void CADOCommand::SetText
(
CString strCommandText //命令文本
)
// 返回命令文本
CString CADOCommand::GetText
// 设置CADOCommand对象类型
void CADOCommand::SetType
(
int nCommandType //指示CADOCommand对象类型的整数值
)
// 返回命令对象指针
_CommandPtr CADOCommand::GetCommand
// 执行命令文本
BOOL CADOCommand::Execute