ACCESS MFC ado 连接类 示例代码
来源:互联网 发布:男士白色豆豆鞋上淘宝 编辑:程序博客网 时间:2024/06/05 04:21
ifndef ADOCONNECTION_H#define ADOCONNECTION_H#include "stdafx.h"#pragma warning(disable:4146)#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")#pragma warning(default:4146)using namespace ADODB;//数据库类型定义#define ACCESS2003 1#define ACCESS2007 2#define STDMSSQL2000 3 //MSSQL2000 7.0 Standard Security#define TRUMSSQL2000 4 //MSSQL2000 7.0 Trusted connectionclass CAdoConnection{public: CAdoConnection(void); ~CAdoConnection(void); // _ConnectionPtr接口 _ConnectionPtr m_Connection; // 初始化数据库连接 int InitConnection(void); void SetServerAddress(CString& ServerAddress); void SetDataBase(CString& DataBase); void SetUser(CString& sUser); void SetPassword(CString& sPassword); void SetDataBaseType(int n); int GetDataBaseType(); void SetSqlString(CString& sSql); void ClearSqlString(); void ClearAllValue(); void Close(); BOOL Execute(); CString& GetErrorString(); BOOL SetConnectionString();protected: // ADO连接数据库字符串 CString m_sConnection; //出错信息 CString m_sError; //SQL服务器地址 CString m_sServerAddress; //SQL数据库 CString m_sDataBase; //SQL用户名 CString m_sUser; //SQL密码 CString m_sPassword; //数据库类型 int m_nDataBaseType; //SQL语句 CString m_sSql; //产生连接字符串供 _ConnectionPtr,OPEN时候使用};#endif#include "StdAfx.h"#include "AdoConnection.h"CAdoConnection::CAdoConnection(void):m_sConnection(_T("")), m_sError(_T("")), m_sServerAddress(_T("")), m_sDataBase(_T("")), m_sPassword(_T("")), m_sUser(_T("")){ m_nDataBaseType=0;}CAdoConnection::~CAdoConnection(void){}// 初始化数据库连接//成功返回1//失败返回0int CAdoConnection::InitConnection(void){ if (!SetConnectionString()) { return 0; } if (m_sConnection.IsEmpty()) { m_sError = _T("连接字符串为空"); return 0; } try { HRESULT hr = m_Connection.CreateInstance(__uuidof(Connection)); if (FAILED(hr)) { m_sError = _T("Create _ConnectionPtr Instance failed!"); return 0; } hr = m_Connection->Open(_bstr_t(m_sConnection), _bstr_t(m_sUser), _bstr_t(m_sPassword), -1); return 1; } catch(_com_error &e) { m_sError.Format(_T("数据库打开失败,错误原因:%s"), (LPCTSTR)e.Description()); return 0; }}BOOL CAdoConnection::SetConnectionString(){ if (m_nDataBaseType == 0) { m_sError = _T("未指定数据库类型"); return FALSE; } switch (m_nDataBaseType) { case ACCESS2003: if (m_sDataBase.IsEmpty()) { m_sError = _T("未指定ACCESS数据库文件"); return FALSE; } if (m_sPassword.IsEmpty()) m_sConnection.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;User Id=admin;Password=;"), m_sDataBase); else m_sConnection.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;"),m_sDataBase,m_sPassword); break; case ACCESS2007: if (m_sDataBase.IsEmpty()) { m_sError = _T("未指定ACCESS数据库文件"); return FALSE; } if (m_sPassword.IsEmpty()) m_sConnection.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False;"), m_sDataBase); else m_sConnection.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Jet OLEDB:Database Password=%s;"),m_sDataBase,m_sPassword); break; case STDMSSQL2000: if (m_sServerAddress.IsEmpty()) m_sServerAddress = _T("127.0.0.1"); if (m_sDataBase.IsEmpty()) { m_sError = _T("未指定SQL数据库"); return FALSE; } if (m_sUser.IsEmpty()) { m_sError = _T("未指定SQL数据库登陆账号"); return FALSE; } m_sConnection.Format(_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s;"), m_sServerAddress, m_sDataBase, m_sUser, m_sPassword); break; case TRUMSSQL2000: if (m_sServerAddress.IsEmpty()) m_sServerAddress = _T("127.0.0.1"); if (m_sDataBase.IsEmpty()) { m_sError = _T("未指定SQL数据库"); return FALSE; } m_sConnection.Format(_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;Integrated Security=SSPI;"), m_sServerAddress, m_sDataBase); break; default: break; } return TRUE;}void CAdoConnection::SetUser( CString& sUser){ m_sUser = sUser;}void CAdoConnection::SetPassword( CString& sPassword){ m_sPassword = sPassword;}CString& CAdoConnection::GetErrorString(){ return m_sError;}void CAdoConnection::SetDataBaseType( int n ){ m_nDataBaseType = n;}int CAdoConnection::GetDataBaseType(){ return m_nDataBaseType;}void CAdoConnection::SetSqlString( CString& sSql ){ m_sSql = sSql;}void CAdoConnection::ClearSqlString(){ m_sSql = _T("");}void CAdoConnection::ClearAllValue(){ m_sConnection = _T(""); m_sError = _T(""); m_sUser = _T(""); m_sPassword = _T(""); m_sDataBase = _T(""); m_nDataBaseType = 0; m_sSql = _T("");}void CAdoConnection::Close(){ if (m_Connection->State) m_Connection->Close(); m_Connection = NULL;}BOOL CAdoConnection::Execute(){ COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if(!m_Connection->Execute(_bstr_t(m_sSql), &vtOptional, -1)) { m_sError = _T("SQL执行失败!"); return FALSE; } return TRUE;}void CAdoConnection::SetServerAddress( CString& ServerAddress ){ m_sServerAddress = ServerAddress;}void CAdoConnection::SetDataBase( CString& DataBase ){ m_sDataBase = DataBase;}