数据库操作类

来源:互联网 发布:国家兴衰周期表知乎 编辑:程序博客网 时间:2024/06/07 10:40

////////////////////////////////////////////////////////////////////////////
//名称:OnInitADOConn
//功能:初始化COM环境
/////////////////////////////////////////////////////////////////////////////
void ADO::OnInitADOConn()
{
 ::CoInitialize(NULL);
 try
 {
  m_pConnection.CreateInstance("ADODB.Connection");
  _bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=score.mdb;";
  m_pConnection->Open(strConnect,"","",adModeUnknown);
 }
 catch(_com_error e)
 {
  AfxMessageBox(e.Description());
 }
}

////////////////////////////////////////////////////////////////////////////
//名称:OpenRecordset
//功能:打开记录集
/////////////////////////////////////////////////////////////////////////////
_RecordsetPtr& ADO::OpenRecordset(CString sql)
{
 ASSERT(!sql.IsEmpty());
 try
 {
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  m_pRecordset->Open(_bstr_t(sql),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
 }
 catch(_com_error e)
 {
  AfxMessageBox(e.Description());
 }
 return m_pRecordset;
}

////////////////////////////////////////////////////////////////////////////
//名称:CloseRecordset
//功能:关闭记录集
/////////////////////////////////////////////////////////////////////////////
void ADO::CloseRecordset()
{
 if(m_pRecordset->GetState() == adStateOpen)
 {
  m_pRecordset->Close();
 }
}

////////////////////////////////////////////////////////////////////////////
//名称:CloseConn
//功能:断开数据库连接
/////////////////////////////////////////////////////////////////////////////
void ADO::CloseConn()
{
 m_pConnection->Close();
 ::CoUninitialize();
}

////////////////////////////////////////////////////////////////////////////
//名称:GetRecordsetCount
//功能:取得记录集数目
/////////////////////////////////////////////////////////////////////////////
UINT ADO::GetRecordsetCount(_RecordsetPtr pRecordset)
{
 int nCount = 0;
 try
 {
  pRecordset->MoveFirst();
 }
 catch(...)
 {
  return 0;
 }
 if(pRecordset->adoEOF)
 {
  return 0;
 }
 while(!pRecordset->adoEOF)
 {
  pRecordset->MoveNext();
  nCount = nCount + 1;
 }
 pRecordset->MoveFirst();
 return nCount;
}