ADO类

来源:互联网 发布:天池大数据竞赛官网 编辑:程序博客网 时间:2024/04/30 05:45
为了方便的操作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// 某字段是否为NULLBOOL 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::MoveFirstvoid CADORecordset::MoveNextvoid CADORecordset::MovePreviousvoid 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 AppendChunckprs.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 GetChunckchar 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 RecordsetCADORecordset RS;   //Duplicate Recordsetm_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::GetParameterB.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

0 0
原创粉丝点击