ADO操纵数据库封装类

// Ado.h: interface for the CAdo class.
//
//

#if !defined(AFX_ADO_H__752BAA60_879D_4055_8A96_D272B57F0C87__INCLUDED_)
#define AFX_ADO_H__752BAA60_879D_4055_8A96_D272B57F0C87__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF")
class CAdo 
{
private:
    _RecordsetPtr m_pRst;//("ADODB.Connection")
 _ConnectionPtr m_pCon;//("ADODB.Recordset")
 CString m_szLastError;
public:
 CAdo();
 virtual ~CAdo();
 BOOL GetFieldType(long nIndex,int &nType);
 enum DatabaseType{DBT_ACCESS,DBT_SQL,DBT_ORACLE,DBT_ODBC};
 BOOL Connect(DatabaseType DBType,LPCTSTR szDatabase,LPCTSTR szUser=NULL,LPCTSTR szPass=NULL,LPCSTR szHost = NULL);
 int ExecSQL(LPCTSTR szSQL);
 BOOL Select(LPCTSTR szSQL);
 BOOL IsEOF();
 BOOL MoveNext();
 BOOL GetFieldValue(LPCTSTR szField,COleDateTime &tValue);
 BOOL GetFieldValue(LPCTSTR szField,double &fValue);
 BOOL GetFieldValue(LPCTSTR szField,CString &sValue);
 BOOL GetFieldValue(LPCTSTR szField,int &iValue);
 int GetFieldMoney(LPCTSTR szField,double &fValue);
 BOOL GetFieldByIndex(long nIndex,COleDateTime &tValue);
 BOOL GetFieldByIndex(long nIndex,double &fValue);
 BOOL GetFieldByIndex(long nIndex,CString &sValue);
 BOOL GetFieldByIndex(long nIndex,int &iValue);
 int GetFieldCount();
 BOOL GetFieldName(long nIndex,CString &szName);
 int GetRecordCount();
 LPCTSTR GetLastError() {return m_szLastError;}
};

#endif // !defined(AFX_ADO_H__752BAA60_879D_4055_8A96_D272B57F0C87__INCLUDED_)

 

 

// Ado.cpp: implementation of the CAdo class.
//
//

#include "stdafx.h"
#include "ADODB.h"
#include "Ado.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//
// Construction/Destruction
//

CAdo::CAdo()
{
 ::CoInitialize(NULL);
}

CAdo::~CAdo()
{
    ::CoUninitialize();
}
BOOL CAdo::Connect(DatabaseType DBType,LPCTSTR szDatabase,LPCTSTR szUser,LPCTSTR szPass,LPCSTR szHost)
{
    CString str;
 switch(DBType)
 {
 case DBT_ACCESS:
  {
   str.Format("Provider=MSDASQL.1;Persist Security Info=False;"
    "Data Source=MS Access Database;Initial Catalog=%s",szDatabase);
   //str.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",szDatabase);
   
  }
  break;
 case DBT_ODBC:
  {
            str.Format("Data Source=%s;UID=%s;PWD=%s;",szDatabase,szUser,szPass);
  }
  break;
 case DBT_SQL:
  {
   str="Driver=SQL Server;Server=";
   str+=szHost;
   str+=";Database=";
   str+=szDatabase;
   str+=";UID=";
   str+=szUser;
   str+=";PWD=";
   str += szPass;
  }
  
  break;
 case DBT_ORACLE:
  str="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=";
  str+=szUser;
  str+=";Password=";
  str+=szPass;
  str+=";Data Source=";
  str+=szHost;
  str+="//";
  str+=szDatabase;
  break;
 }
 
 try
 {
  m_pCon.CreateInstance(__uuidof(Connection));
  m_pCon->Open(_bstr_t(str),szUser,szPass,adModeUnknown);
  
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}

int CAdo::ExecSQL(LPCTSTR szSql)
{
    _variant_t vRet;
    try
    {
        m_pCon->Execute(szSql,&vRet,adCmdText);
    }
 catch( _com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return e.Error();
 }
 
    return 0;
}
BOOL CAdo::Select(LPCTSTR szSQL)
{
 try
 {
  if(m_pRst)
   m_pRst ->Close();
  m_pRst.CreateInstance(__uuidof(Recordset));
  m_pRst ->Open(szSQL,m_pCon.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);
 }
 catch( _com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 
 return TRUE;
}
int CAdo::GetFieldCount()
{
 try
 {
  return m_pRst ->Fields->Count;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}

BOOL CAdo::GetFieldName(long nIndex,CString &szName)
{
 try
 {
  szName = (LPCSTR)m_pRst ->Fields ->Item[nIndex] ->Name;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}
BOOL CAdo::GetFieldValue(LPCTSTR szField,int &iValue)
{
 
 try
 {
  iValue = (long)m_pRst ->GetCollect(szField);
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}

BOOL CAdo::GetFieldByIndex(long nIndex,int &iValue)
{
 try
 {
  iValue = (long)m_pRst ->GetCollect(nIndex);
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}

BOOL CAdo::GetFieldByIndex(long nIndex,CString &szValue)
{
 try
 {
  szValue = m_pRst ->GetCollect(nIndex).bstrVal;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
}

BOOL CAdo::GetFieldByIndex(long nIndex,COleDateTime &tValue)
{
 try
 {
  tValue = (DATE)m_pRst->GetCollect(nIndex);
  return TRUE;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
}
BOOL CAdo::GetFieldByIndex(long nIndex,double &fValue)
{
 try
 {
  fValue = m_pRst->GetCollect(nIndex);
  return TRUE;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }

}

BOOL CAdo::IsEOF()
{
 try
 {
  return m_pRst ->adoEOF;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 
}
BOOL CAdo:: MoveNext()
{
 try
 {
  m_pRst ->MoveNext();
  return TRUE;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
}

BOOL CAdo::GetFieldValue(LPCTSTR szField,CString &sValue)
{
 try
 {
  sValue = m_pRst->GetCollect(szField).bstrVal;
  return TRUE;
 } 
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 
 
}
BOOL CAdo::GetFieldValue(LPCTSTR szField,COleDateTime &tValue)
{
 try
 {
  tValue = (DATE)m_pRst->GetCollect(szField);
  return TRUE;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
}

 

int CAdo::GetRecordCount()
{
 try
 {
  return m_pRst ->RecordCount;
 } 
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
}

BOOL CAdo::GetFieldType(long nIndex, int &nType)
{
 try
 {
  nType = m_pRst ->Fields->Item[nIndex] ->Type;
 }
 catch(_com_error &e)
 {
  m_szLastError = (LPCSTR)e.Description();
  return FALSE;
 }
 return TRUE;
 
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值