⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adosql.cpp

📁 有关于C++网络传输操作的一个DLL开发,希望对学习C++的人有帮助
💻 CPP
字号:
#include "StdAfx.h"
#include ".\adosql.h"
 
using namespace std;


AdoSQL::AdoSQL(void)
{
	if(FAILED(::CoInitialize(NULL)))
	{
		Log("ADO 初始化失败!");
		return ;
	}
	m_pConn.CreateInstance(__uuidof(Connection));
	m_pConnVCP.CreateInstance(__uuidof(Connection));

	//外网
	char szConnSMSGA[] ="Provider=sqloledb.1;Persist Security Info=True;Data Source=222.76.211.9;Initial Catalog=SMSGA;User Id=SMSGADomain;Password=Domain911;Connect Timeout=15";
	char szConnVCP[] =  "Provider=sqloledb.1;Persist Security Info=True;Data Source=222.76.211.9;Initial Catalog=VCP;User Id=vcp;Password=Gb/t-Z2&2ds1423%#2D;Connect Timeout=15";

	//内网
	//char szConnSMSGA[] ="Provider=sqloledb.1;Persist Security Info=True;Data Source=192.168.0.53;Initial Catalog=SMSGA;User Id=yunyingpt;Password=yunyingpt;Connect Timeout=15";
	//char szConnVCP[] =  "Provider=sqloledb.1;Persist Security Info=True;Data Source=192.168.0.53;Initial Catalog=yunyingpt;User Id=yunyingpt;Password=yunyingpt;Connect Timeout=15";
	
	AdoSQL::ConnectDataBase(m_pConn, szConnSMSGA);
	AdoSQL::ConnectDataBase(m_pConnVCP, szConnVCP);
}

AdoSQL::~AdoSQL(void)
{
	AdoSQL::CloseDataBase(this->m_pConn);
	AdoSQL::CloseDataBase(this->m_pConnVCP);
}


bool AdoSQL::CloseDataBase(_ConnectionPtr const &pConn)
{
	try
	{
		pConn->Close();
	}
	catch(_com_error &e)
	{
		Log("关闭数据失败!%s",(LPCTSTR)e.Description());

		return false;
	}

	return true;
}

bool AdoSQL::ConnectDataBase(_ConnectionPtr const &pConn ,char const * pszConn)
{
	HRESULT hr;

	try
	{
		hr = pConn->Open(pszConn, "","",adModeUnknown); 			
	}
	catch(_com_error &e)
	{		
		Log("Connection database SMSGA failed,error code:%s.",(LPCTSTR)e.Description());		
		return false;
	}

	//Log("Connect Remote DB successful...");
	return true;
}


_ConnectionPtr const & AdoSQL::GetConnectionPtr() const
{
	return m_pConn;
}

_ConnectionPtr const & AdoSQL::GetConnectionPtrVCP() const
{
	return m_pConnVCP;
}

bool AdoSQL::ExucteSP_Weather(char const *szCode, char const *szCity , int iType ,string &ReturnInfo /*Out*/)
{
	_ParameterPtr ptr1;

	_ParameterPtr ptr2;

	_ParameterPtr ptr3;

	_ParameterPtr ptr4;

	_CommandPtr cmd;

	try
	{
		cmd.CreateInstance(__uuidof(Command));

		ptr1.CreateInstance(__uuidof(Parameter));

		ptr2.CreateInstance(__uuidof(Parameter));

		ptr3.CreateInstance(__uuidof(Parameter));

		ptr4.CreateInstance(__uuidof(Parameter));

		ptr1->Name="Code ";
		ptr1->Type=adVarChar;
		ptr1->Size=10;
		ptr1->Value=_variant_t(szCode);
		ptr1->Direction=adParamInput;
		cmd->Parameters->Append(ptr1);

		ptr2->Name="City";
		ptr2->Type=adVarChar;
		ptr2->Size=20;
		ptr2->Value=_variant_t(szCity);
		ptr2->Direction=adParamInput;
		cmd->Parameters->Append(ptr2);


		ptr3->Name="Type ";
		ptr3->Type = adInteger ;
		ptr3->Size= sizeof(adInteger);
		ptr3->Value=_variant_t(iType);
		ptr3->Direction=adParamInput;
		cmd->Parameters->Append(ptr3);


		ptr4->Name="ReturnInfo";
		ptr4->Type=adVarChar;
		ptr4->Size=200;
		ptr4->Direction=adParamOutput;
		cmd->Parameters->Append(ptr4);
		
		cmd->ActiveConnection =	m_pConn;
	    cmd->CommandText = "Pro_Wth_Get";
	    cmd->CommandType = adCmdStoredProc;
	    cmd->Execute(NULL,NULL,adCmdStoredProc);

		ReturnInfo =(LPCTSTR)(bstr_t)ptr4->Value;

		return true;
	}
	catch(_com_error &e)
	{
		Log("SQL server Excute Pro_Wth_Get error! 城市代码:%s,城市名称:%s",  szCode ,  szCity);
		return false;
		
	}
}

//该查询只能针对某个查询语句返回一个值
void AdoSQL::SelectDB(char * szSQl , string &RetInfo)
{
	int ilen = strlen(szSQl);
	if (0 == ilen)
		return ;

#define GET_RECORD(in) \
try\
{\
	strTemp=(LPTSTR)(_bstr_t)pRecordset->GetCollect(in);\
}\
catch(_com_error &e)\
{\
	strTemp="0";\
}\

	_RecordsetPtr pRecordset;
	pRecordset.CreateInstance(__uuidof(Recordset));

	_variant_t var;
	try
	{
		pRecordset=m_pConn->Execute(bstr_t(szSQl ),&var,adCmdText);
		if (!pRecordset->adoEOF)
		{
			string strTemp;

			GET_RECORD("RetInfo");
			RetInfo = strTemp ;
			return ;
		}
	}
	catch(_com_error &e)
	{
		Log("select Error:%s",(LPTSTR)e.Description());

		return ;
	}
	return ;
}



bool AdoSQL::ExcuteIACShell(char const * szTelCode, char const * szMobile, string & sContent, char const * szLinkID, string & sSender, int & ReturnInfo)
{
	_ParameterPtr ptr1;
	_ParameterPtr ptr2;
	_ParameterPtr ptr3;
	_ParameterPtr ptr4;
	_ParameterPtr ptr5;
	_ParameterPtr ptr6;
	_ParameterPtr ptr7;
	_ParameterPtr ptr8;

	_CommandPtr cmd;

	try
	{
		cmd.CreateInstance(__uuidof(Command));

		
		ptr1.CreateInstance(__uuidof(Parameter));
		ptr2.CreateInstance(__uuidof(Parameter));
		ptr3.CreateInstance(__uuidof(Parameter));
		ptr4.CreateInstance(__uuidof(Parameter));
		ptr5.CreateInstance(__uuidof(Parameter));
		ptr6.CreateInstance(__uuidof(Parameter));
		ptr7.CreateInstance(__uuidof(Parameter));
		ptr8.CreateInstance(__uuidof(Parameter));

		ptr1->Name="Mobile";
		ptr1->Type=adVarChar;
		ptr1->Size=20;
		ptr1->Value=_variant_t(szMobile);
		ptr1->Direction=adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr1);

		ptr2->Name="TelCode";
		ptr2->Type=adVarChar;
		ptr2->Size=10;
		ptr2->Value=_variant_t(szTelCode);
		ptr2->Direction=::adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr2);

		ptr3->Name="Content ";
		ptr3->Type = adVarChar;
		ptr3->Size= 200;
		ptr3->Value=_variant_t(sContent.c_str());
		ptr3->Direction=::adParamInput;
		cmd->Parameters->Append(ptr3);


		ptr4->Name="LinkID";
		ptr4->Type=adVarChar;
		ptr4->Size=50;
		ptr4->Value =_variant_t(szLinkID);
		ptr4->Direction=adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr4);

		ptr5->Name="Sender";
		ptr5->Type=adVarChar;
		ptr5->Size=20;
		ptr5->Value =_variant_t(sSender.c_str());
		ptr5->Direction = adParamInput;
		cmd->Parameters->Append(ptr5);

		ptr6->Name="ContentOut";
		ptr6->Type= adVarChar;
		ptr6->Size=200;
		ptr6->Direction=adParamOutput;
		cmd->Parameters->Append(ptr6);

		ptr7->Name="SenderOut";
		ptr7->Type= adVarChar;
		ptr7->Size=20;
		ptr7->Direction=adParamOutput;
		cmd->Parameters->Append(ptr7);

		ptr8->Name="ReturnInfo";
		ptr8->Type= adInteger;
		ptr8->Size=sizeof(adInteger);
		ptr8->Direction=adParamOutput;
		cmd->Parameters->Append(ptr8);

		cmd->ActiveConnection =	m_pConn;
	    cmd->CommandText = "Pro_IAC_Shell";
	    cmd->CommandType = adCmdStoredProc;
		cmd->Execute(NULL,NULL,adCmdStoredProc);

		ReturnInfo = ptr8->Value;

		if(-1 == ReturnInfo)
			;
		else
		{
			sContent = (LPCTSTR)(bstr_t)ptr6->Value;

			sSender = (LPCTSTR)(bstr_t)ptr7->Value;
		}

		return true;
	}
	catch(_com_error &e)
	{
		sContent = "网络连接出错,请稍后再试!";
		Log("SQL server Excute Pro_IAC_Shell error! %s " , (LPCTSTR)e.Description());
		return false;
		
	}
	return true;
}

bool AdoSQL::Excu_CTSI_SMS_Insert_Shell_IAC(char const * szlinkID, char const * szMobile, string & sContent )
{
	char szContentout[200]= {0};

	_ParameterPtr ptr1;
	_ParameterPtr ptr2;
	_ParameterPtr ptr3;
	_ParameterPtr ptr4;

	_CommandPtr cmd;

	try
	{
		cmd.CreateInstance(__uuidof(Command));
		
		ptr1.CreateInstance(__uuidof(Parameter));
		ptr2.CreateInstance(__uuidof(Parameter));
		ptr3.CreateInstance(__uuidof(Parameter));
		ptr4.CreateInstance(__uuidof(Parameter));

		ptr1->Name="linkid";
		ptr1->Type=adVarChar;
		ptr1->Size=50;
		ptr1->Value=_variant_t(szlinkID);
		ptr1->Direction=adParamInput;
		cmd->Parameters->Append(ptr1);

		ptr2->Name="mobile";
		ptr2->Type=adVarChar;
		ptr2->Size=20;
		ptr2->Value=_variant_t(szMobile);
		ptr2->Direction=adParamInput;
		cmd->Parameters->Append(ptr2);

		ptr3->Name="content";
		ptr3->Type=adVarChar;
		ptr3->Size=200;
		ptr3->Value=_variant_t(sContent.c_str());
		ptr3->Direction=adParamInput;
		cmd->Parameters->Append(ptr3);

		ptr4->Name="contentout";
		ptr4->Type=adVarChar;
		ptr4->Size=200;
		ptr4->Value=_variant_t(szContentout);
		ptr4->Direction=adParamOutput;
		cmd->Parameters->Append(ptr4);

		cmd->ActiveConnection =	m_pConnVCP;
	    cmd->CommandText = "CTSI_SMS_Insert_Shell_IAC";
	    cmd->CommandType = adCmdStoredProc;
		cmd->Execute(NULL,NULL,adCmdStoredProc);

		//szContentout = ptr4->Value;
		/*if(null == ptr4->Value)
		{
			sContent = "网络连接出错,请稍后再试!" ;
			Log("SQL server Excute CTSI_SMS_Insert_Shell_IAC error! 过程返回空值!");
			return false;
		}		
		else
		{*/
			sContent = (LPCTSTR)(bstr_t)ptr4->Value;
		//}
		return true;
	}
	catch(_com_error &e)
	{
		sContent = "网络连接出错,请稍后再试!" ;
		Log("SQL server Excute CTSI_SMS_Insert_Shell_IAC error! %s " , (LPCTSTR)e.Description());
		return false;
		
	}
	return true;
}

bool AdoSQL::ExcuSP_Pro_IAC_GetBiz_Shell(char const * szTelCode, char const * szMobile, string & sContent, \
		char const * szLinkID, string & sSender, int & BusinessID , int & ReturnValue /*output--返回:1成功、-1转向网站搜索*/)
{
	_ParameterPtr ptr1;
	_ParameterPtr ptr2;
	_ParameterPtr ptr3;
	_ParameterPtr ptr4;
	_ParameterPtr ptr5;
	_ParameterPtr ptr6;
	_ParameterPtr ptr7;

	_CommandPtr cmd;

	try
	{
		cmd.CreateInstance(__uuidof(Command));

		
		ptr1.CreateInstance(__uuidof(Parameter));
		ptr2.CreateInstance(__uuidof(Parameter));
		ptr3.CreateInstance(__uuidof(Parameter));
		ptr4.CreateInstance(__uuidof(Parameter));
		ptr5.CreateInstance(__uuidof(Parameter));
		ptr6.CreateInstance(__uuidof(Parameter));
		ptr7.CreateInstance(__uuidof(Parameter));

		ptr1->Name="Mobile";
		ptr1->Type=adVarChar;
		ptr1->Size=20;
		ptr1->Value=_variant_t(szMobile);
		ptr1->Direction=adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr1);

		ptr2->Name="TelCode";
		ptr2->Type=adVarChar;
		ptr2->Size=10;
		ptr2->Value=_variant_t(szTelCode);
		ptr2->Direction=::adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr2);

		ptr3->Name="Content ";
		ptr3->Type = adVarChar;
		ptr3->Size= 200;
		ptr3->Value=_variant_t(sContent.c_str());
		ptr3->Direction=::adParamInput;
		cmd->Parameters->Append(ptr3);


		ptr4->Name="LinkID";
		ptr4->Type=adVarChar;
		ptr4->Size=50;
		ptr4->Value =_variant_t(szLinkID);
		ptr4->Direction=adParamInput ; //adParamInput;
		cmd->Parameters->Append(ptr4);

		ptr5->Name="Sender";
		ptr5->Type=adVarChar;
		ptr5->Size=20;
		ptr5->Value =_variant_t(sSender.c_str());
		ptr5->Direction = adParamInput;
		cmd->Parameters->Append(ptr5);

		ptr6->Name="BusinessID";
		ptr6->Type= adInteger;
		ptr6->Size=sizeof(adInteger);
		ptr6->Direction=adParamOutput;
		cmd->Parameters->Append(ptr6);

		ptr7->Name="ReturnValue";
		ptr7->Type= adInteger;
		ptr7->Size=sizeof(adInteger);
		ptr7->Direction=adParamOutput;
		cmd->Parameters->Append(ptr7);

		cmd->ActiveConnection =	m_pConn;
	    cmd->CommandText = "Pro_IAC_GetBiz_Shell";
	    cmd->CommandType = adCmdStoredProc;
		cmd->Execute(NULL,NULL,adCmdStoredProc);

		_variant_t var;

		var=ptr7->Value;

		if(ptr7->Value.vt == VT_NULL || ptr7->Value.vt == VT_EMPTY)
		{
			Log("ReturnValue返回值为空!");
			return false;
		}
		else
		{
			ReturnValue =(int) ptr7->Value;
			if(1 == ReturnValue)
			{
				if(ptr6->Value.vt == VT_NULL || ptr6->Value.vt == VT_EMPTY) 
				{
					Log("BusinessID返回值为空!");
					return false;
				}
				BusinessID =(int) ptr6->Value;
			}
			return true;
		}		
	}
	catch(_com_error &e)
	{
		sContent = "网络连接出错,请稍后再试!";
		Log("SQL server Excute Pro_IAC_GetBiz_Shell error! %s " , (LPCTSTR)e.Description());
		return false;
		
	}
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -