www.pudn.com > VCOperateAccess.rar > OperateAccess.cpp


// OperateAccess.cpp: implementation of the COperateAccess class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "Access.h" 
#include "OperateAccess.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
COperateAccess::COperateAccess() 
{ 
 
} 
 
COperateAccess::~COperateAccess() 
{ 
 
} 
 
BOOL COperateAccess::ConnectDataBase(CString dbName,CString userID,CString password) 
{ 
	AfxOleInit(); 
 
	HRESULT hr; 
    try 
	{ 
		hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象 
		if(SUCCEEDED(hr)) 
		{ 
			CString connectString; 
			connectString.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",dbName); 
	//		m_pConnection->ConnectionString="DRIVER={Microsoft   Access   Driver   (file.mdb)}"; 
			hr = m_pConnection->Open((_bstr_t)connectString, 
				(_bstr_t)userID,(_bstr_t)password,adModeUnknown);///连接数据库 
			//上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97, 
			//需要改为:Provider=Microsoft.Jet.OLEDB.3.51; 
		} 
	} 
	catch(_com_error e)///捕捉异常 
	{ 
		CString errormessage; 
		errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); 
		AfxMessageBox(errormessage); //显示错误信息 
		return FALSE; 
	}  
//	AfxMessageBox("connect success"); 
	return TRUE; 
 
} 
 
extern CAccessApp theApp; 
 
_RecordsetPtr COperateAccess::ReadDataBase(CString SQLStatement) 
{ 
	_RecordsetPtr m_pRecordset; 
	try 
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset"); 
		 
		m_pRecordset->Open((_bstr_t)SQLStatement,\ 
			_variant_t((IDispatch *)theApp.connectAccess.m_pConnection,true),adOpenDynamic,\ 
			adLockOptimistic,adCmdText); 
		 
		if(m_pRecordset->adoEOF) 
		{ 
			AfxMessageBox("当前没有记录存在!"); 
			return NULL; 
		} 
		return m_pRecordset; 
	} 
	catch(_com_error e) 
	{ 
		CString errormessage; 
		errormessage.Format("操作失败!\r\n错误信息:%s",e.ErrorMessage()); 
		AfxMessageBox(errormessage); //显示错误信息 
		AfxMessageBox(e.Source());    
        AfxMessageBox(e.Description());    
		return NULL; 
	} 
 
} 
 
BOOL COperateAccess::OperateRecord(CString SQLStatement) 
{ 
	_variant_t RecordsAffected; 
	HRESULT hr; 
	try 
	{ 
		hr=theApp.connectAccess.m_pConnection->Execute((_bstr_t)SQLStatement,&RecordsAffected,adCmdText); 
		if(SUCCEEDED(hr)) 
		{ 
			return TRUE; 
		} 
		else 
			return FALSE; 
	} 
	catch(_com_error e) 
	{ 
		CString errormessage; 
		errormessage.Format("操作失败!\r\n错误信息:%s",e.ErrorMessage()); 
		AfxMessageBox(errormessage); //显示错误信息 
		AfxMessageBox(e.Source());    
        AfxMessageBox(e.Description());    
		return FALSE; 
	} 
	return TRUE; 
}