数据库连接类

#include "StdAfx.h"
#include "ADODatabase.h"




CADODatabase::CADODatabase(DBType dbType)
{
m_dbType=dbType;
}


CADODatabase::~CADODatabase(void)
{
m_pConnection.Release();
}


DBType CADODatabase::GetDBType()
{
return m_dbType;
}


HRESULT CADODatabase::Open(const CString& strConnect)
{
if(!m_pRecordset.GetInterfacePtr())
m_pRecordset.CreateInstance(__uuidof(/*ADODB::*/Recordset));
if(!m_pConnection.GetInterfacePtr())
m_pConnection.CreateInstance(__uuidof(/*ADODB::*/Connection));
if(m_dbType!=DBS_MYSQL)
return m_pConnection->Open((_bstr_t)strConnect, "", "",/*ADODB::*/adModeUnknown);
else
return m_pConnection->Open(L"DSN=box_db;server=192.168.0.100;",L"admin",L"shuidun",/*ADODB::*/adModeUnknown);
}


HRESULT CADODatabase::Open(const CString& strDBName,const CString& strUserName,const CString& strPassword,const CString& strIP,int port)
{
CString strConnect;
switch(m_dbType)
{
case DBS_SQL:
strConnect.Format(_T("Provider=sqloledb;Network Library=DBMSSOCN;Data Source=%s,%d;Initial Catalog=%s; User ID=%s;Password=%s"),
strIP,port,strDBName,strUserName,strPassword);
break;
case DBS_ORACLE:
strConnect.Format(_T("Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=%s;Password=%s;\
Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %d)))(CONNECT_DATA = (SID = %s)))"),
strUserName,strPassword,strIP,port,strDBName);
break;
case DBS_ACCESS:
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;"),strDBName);
break;
case DBS_MYSQL:
strConnect.Format(_T("Provider=MSDASQL.1;Driver={MySQL ODBC 3.51 Driver};Server=%s,%d;DataBase=%s;UID=%s;PWD=%s"),
strIP,port,strDBName,strUserName,strPassword);
//Provider=MSDASQL.1;Driver={MySQL ODBC 3.51 Driver};Server=localhost;DataBase=test;UID=root;PWD=sa
break;
}
return Open(strConnect);
}


/*ADODB::*/_RecordsetPtr CADODatabase::Execute(const CString& strSQL)
{
_variant_t RecordsAffected;
return m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,/*ADODB::*/adCmdText);
}


HRESULT CADODatabase::Close()
{
HRESULT hr = m_pConnection->raw_Close();
return hr;
}
long CADODatabase::GetState()
{
return m_pConnection->GetState();
}
void CADODatabase::SetDBType(DBType dbType)
{
m_dbType=dbType;
}
BOOL CADODatabase::IsOpen()
{
if(!m_pConnection.GetInterfacePtr())
return FALSE;
if(m_pConnection->GetState() == /*ADODB::*/adStateOpen)
return TRUE;
else
return FALSE;
}
void CADODatabase::Init()
{
m_pRecordset.CreateInstance(__uuidof(/*ADODB::*/Recordset));
m_pConnection.CreateInstance(__uuidof(/*ADODB::*/Connection));

}

#pragma once
#include "stdafx.h"
#include "ADODatabase.h"


enum DBType
{
DBS_SQL,
DBS_ORACLE,
DBS_ACCESS,
DBS_MYSQL,
};
class CADODatabase
{
public:
CADODatabase(DBType dbStyle=DBS_SQL);
~CADODatabase(void);
private:
DBType m_dbType;


public:
/*ADODB::*/_RecordsetPtr m_pRecordset;
/*ADODB::*/_ConnectionPtr m_pConnection;
public:
DBType GetDBType(); //获取数据库的类型
void SetDBType(DBType dbType); //设置数据库的类型
HRESULT Open(const CString& strConnect); //打开数据库连接
//参数(IP,端口,用户名,密码,数据库名)
HRESULT Open(const CString& strDBName,const CString& strUserName,const CString& strPassword,const CString& strIP=_T(""),int port=0);
/*ADODB::*/_RecordsetPtr Execute(const CString& strSQL); //执行SQL语句
long GetState(); //获取数据库的连接状态
HRESULT Close(); //关闭数据库连接
BOOL IsOpen(); //判断连接是否打开
void Init(); //数据库操作对象的初始化


};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值