www.pudn.com > ADO_connect_query.rar > DbOperater.cpp


#include "stdafx.h" 
#include "DbOperater.h" 
#include "DBConnection.h" 
 
extern _ConnectionPtr pADOConn;//ADO连接类 
extern long retADOConn;//ADO连接返回 
 
extern char strServer[]; 
extern char strUID[]; 
extern char strPWD[]; 
extern char strDBname[]; 
 
extern 	SQLRETURN ODBCDbInitialHenv(); 
extern  void ODBCDbFreeHenv(); 
 
SQLHDBC hdbc; 
 
//函数InitDb初始化ADO连接 
long InitDb() 
{ 
//	::CoInitialize(NULL); 
	//Added by LuoMin 2006/10/27 
	//初始化全局使用的ODBC环境句柄 
	SQLRETURN Tempretcode; 
	Tempretcode = ODBCDbInitialHenv(); 
	if(Tempretcode != SQL_SUCCESS && Tempretcode != SQL_SUCCESS_WITH_INFO) 
	{ 
		AfxMessageBox("初始化全局环境句柄出错!"); 
		return 1; 
	} 
 
 
	Tempretcode = ODBCDbInitialHdbc(&hdbc); 
	if(!(Tempretcode == SQL_SUCCESS || Tempretcode == SQL_SUCCESS_WITH_INFO) ) 
	{ 
		AfxMessageBox("获得数据库语句句柄出错!"); 
		return 1; 
	} 
 
	//初始化ADO连接 
	//并将其返回值保存在全局变量retADOConn中 
	HRESULT hr; 
	hr = pADOConn.CreateInstance(__uuidof(Connection)); 
	if(!SUCCEEDED(hr)) 
	{ 
		AfxMessageBox("Error!"); 
	} 
 
	TCHAR AdoConnStr[128]; 
	memset(AdoConnStr,0,128); 
	wsprintf (AdoConnStr, _T("PROVIDER=SQLOLEDB;SERVER=%s;DATABASE=%s;UID=%s;PWD=%s"),strServer,strDBname,strUID,strPWD); 
	_bstr_t	bstrADOConn=AdoConnStr; 
	retADOConn=pADOConn->Open(bstrADOConn,"","",-1);	 
	if(retADOConn < 0 ) 
	{ 
		return 1; 
	} 
	return 0; 
}	 
 
//函数FreeDb释放ADO连接 
void FreeDb() 
{			 
	ODBCDbFreeDb(&hdbc); 
	ODBCDbFreeHenv(); 
 
	if(pADOConn->State == 1) 
	{ 
		pADOConn->Close(); 
 
	} 
	if(pADOConn) 
	{ 
		pADOConn = NULL; 
	} 
 
//	::CoUninitialize(); 
 
}