ype,SQL_NTS));
if (!Check(nRetCode))
ThrowDBException(nRetCode,m_hstmt);
// 分配内存,填写信息
AllocAndCacheFieldInfo();
AllocRowset();
MoveNext();
m_bBOF = m_bEOF;
}
//异常信息的捕获
CATCH_ALL(e)
{
Close();
THROW_LAST();
}
END_CATCH_ALL
return TRUE;
}
void CTable::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX,_T("TABLE_QUALIFIER"),m_strTableQualifier);
RFX_Text(pFX,_T("TABLE_OWNER"),m_strTableOwner);
RFX_Text(pFX,_T("TABLE_NAME"),m_strTableName);
RFX_Text(pFX,_T("TABLE_TYPE"),m_strTableType);
RFX_Text(pFX,_T("REMARKS"),m_strRemarks);
}
以上两个类对CRecordset的Open和DoFieldExchange函数进行了重载。应用
程序可以在需要时创建CTable或Ccolumns类,并调用OPEN成员函数建立相应的表结构
和字段结构记录集。接下来就可以通过下列函数来遍历异构型数据库的结构信息
了。
Void CRecordset::MoveFirst(); //移到第一条记录
Void CRecordset::MoveLast(); //移到最后一条记录
Void CRecordset::MovePrev(); //移到前一条记录
Void CRecordset::MoveNext(); //移到后一条记录
BOOL CRecordset::IsBOF(); //判断是否到达第一条记录前
BOOL CRecordset::IsEOF(); //判断是否到达最后一条记录后
四、结束语
利用自定义的CTable和Ccolumns类,应用
程序能获取任何异构型数据库库结构
信息。根据获得的信息可以方便的对未知数据库进行相应的操作。若将CTable和
Ccolumns类与文档类、视类结合起来,就可以在窗口里以一定的方式显示结构
信息。作者利用以上技术在异构型数据库通信平台上成功实现了对各种异构型
数据库库结构信息的获取。