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

📄 smsado.cpp

📁 使用短信猫可以实现短信的群发
💻 CPP
字号:
// SMSADO.cpp: implementation of the CSMSADO class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "sms.h"
#include "SMSADO.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

inline void TESTHRESULT(HRESULT x) {if FAILED(x) _com_issue_error(x);};

inline void Trim(CString& str)
{
	CString temp=str;
	temp.TrimLeft();
	temp.TrimRight();
	str=temp;
}

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSMSADO::CSMSADO()
{
	CoInitialize(NULL);//初始化COM组件
	m_Connection.CreateInstance(__uuidof(Connection));//创建一个ADO连接实例
	m_Connection->ConnectionTimeout=5;
	m_Connection->CommandTimeout=5;
}

CSMSADO::~CSMSADO()
{

}

HRESULT CSMSADO::ConnectServer(CString pServerName,CString pUserName,CString pPassWord)
{
	CString ConnStr;
	HRESULT hresult=0;
	//Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=POS;password=POS;Data Source=ORACLE;

	ConnStr.Format("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=%s;password=%s;Data Source=%s;"
		,pUserName
		,pPassWord
		,pServerName);
	_bstr_t _bstrConnStr=ConnStr;
	try
	{
		hresult=m_Connection->Open(_bstrConnStr,"","",NULL);
		if(SUCCEEDED(hresult))
		{
			m_IsAdoConSuc=TRUE;
		}
	}
	catch (_com_error & e)
	{
		TRACE(e.ErrorMessage());
		hresult=-1;
		m_IsAdoConSuc=FALSE;
		TRACE("数据库连接不成功");
	}
	catch (...)
	{
		m_IsAdoConSuc=FALSE;
		hresult=-1;
		TRACE("数据库连接不成功\n");
	}
	TRACE("连接数据库成功\n");
	return hresult;
}

SQLRECORDSET CSMSADO::ExecuteWithRecordset(CString SQLStr)
{
	SQLRECORDSET rs=NULL;
	try{
		if (!m_IsAdoConSuc)
			return NULL;
		TESTHRESULT(rs.CreateInstance(__uuidof(Recordset)));//记录集智能指针对象,在使用时,要先调用CreateInstance函数
		rs->PutCursorLocation(adUseClient); 
		VARIANT var;
		var.vt = VT_I4;
		_bstr_t _bstrSql(SQLStr);
		rs=m_Connection->Execute(_bstrSql,&var,adCmdUnknown); //第一个参数为查询语句,第二参数为存放引影记录条变量的指针,第三个参数为ado选项
		//rs=m_Connection->Execute(bSql,&var,Options);  
	}
	catch(_com_error &e)
	{
		//ReportComErr(e,csSql,ShowErrMsg);
		HRESULT ec=e.Error(); 
		if(ec==E_FAIL||ec==adErrObjectNotSet)//如果由于网络错误,断开当前连接
			m_IsAdoConSuc=FALSE;
		return NULL;
	}
	return rs;
}

long CSMSADO::ExecuteWithoutRecordset(CString SQLStr)
{
	try{
		if (!m_IsAdoConSuc)
			return 0;
		VARIANT var;
		var.vt = VT_I4;
		_bstr_t _bstrSql(SQLStr);
		//第一个参数为查询语句,第二参数为存放引影记录条变量的指针,第三个参数为ado选项
		m_Connection->Execute(_bstrSql,&var,adCmdUnspecified);  
		long ec=var.lVal;
		return ec;
	}
	catch(_com_error &e)
	{
		//ReportComErr(e,csSql,ShowErrMsg);   
		HRESULT ec=e.Error(); 
		if(ec==adErrObjectNotSet)//如果由于网络错误,断开当前连接
			m_IsAdoConSuc=FALSE;
		return -1;
	}
	return 0;
}



int CSMSADO::GetIntegerFieldVal(SQLRECORDSET prs, CString pFieldName)
{
	_variant_t var_t;
	var_t=prs->GetFields()->GetItem((LPCTSTR)pFieldName)->GetValue(); 
	int result=0;
	switch(var_t.vt)
	{
	case VT_I2:{result=var_t.iVal;break;}
	case VT_I4:{result=var_t.lVal;break;}
	case VT_INT:{result=var_t.intVal;break;}
	case VT_UINT:{result=var_t.uintVal;break;}
	case VT_UI2:{result=var_t.uiVal;break;}
	case VT_UI4:{result=var_t.ulVal;break;}
	case VT_DECIMAL:{result=var_t.ulVal;break;}
	}
	return result;
}

double CSMSADO::GetDoubleFieldVal(SQLRECORDSET rs, CString fieldName)
{
	_variant_t var_t;
	double reti=0;
	var_t=rs->GetFields()->GetItem((LPCTSTR)fieldName)->GetValue();
	switch(var_t.vt)
	{
	case VT_R4:{reti=var_t.fltVal;break;}
	case VT_R8:{reti=var_t.dblVal;break;}
	case VT_DECIMAL:
		{
			VarR8FromDec(&(var_t.decVal),&reti);
			break;
		}
	}
	return reti;
}

DBDATETIME CSMSADO::GetDateTimeFeildVal(SQLRECORDSET prs,CString pFieldName)
{
	_variant_t var_t;
	DBDATETIME reti;
	memset(&reti,0,sizeof(DBDATETIME));
	var_t=prs->GetFields()->GetItem((LPCTSTR)pFieldName)->GetValue();
	switch(var_t.vt)
	{
	case VT_DATE:{
		VariantTimeToSystemTime(var_t.date,&reti);
		break;}
	}
	return reti;
}

//////////////////////////////////////////////////////////////////////////
//取得日期字段的值并返回文件型
//////////////////////////////////////////////////////////////////////////
CString CSMSADO::GetDateTimeFeildTextValue(SQLRECORDSET prs,CString pFieldName)
{
	_variant_t var_t;
	DBDATETIME dateTime;
	CString result;
	memset(&dateTime,0,sizeof(DBDATETIME));
	var_t=prs->GetFields()->GetItem((LPCTSTR)pFieldName)->GetValue();
	switch(var_t.vt)
	{
	case VT_DATE:{
		VariantTimeToSystemTime(var_t.date,&dateTime);
		break;}
	}
	result.Format("%04d-%02d-%02d %02d:%02d:%02d",
		dateTime.wYear, //年
		dateTime.wMonth, //月
		dateTime.wDay,  //日
		dateTime.wHour,  //时
		dateTime.wMinute, //分
		dateTime.wSecond  //秒
		);
	return result;
}







CString CSMSADO::GetTextFieldVal(SQLRECORDSET rs,CString fieldName)
{

	_variant_t var_t;
	CString result="";
	FieldPtr fieldPtr=rs->GetFields()->GetItem((LPCTSTR)fieldName);
	if(fieldPtr==NULL)
	{
		TRACE("没取到相关内容");
		return result;
	}

	var_t=fieldPtr->GetValue();

	if (var_t.vt==VT_BSTR)
	{
		result=(char*)var_t.operator _bstr_t().operator char*( ) ;
		Trim(result);
	}
	return result;
}

CString CSMSADO::GetDataTimeText(DBDATETIME t)
{
	CString s="";
	char buf[50]={'\0'};
	sprintf(buf,"%04d-%02d-%02d %02d:%02d:%02d",t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond); 
	s=buf;
	return s;
}

void CSMSADO::CloseConnect()
{
	if(m_IsAdoConSuc)
	{
		m_Connection->Close(); 
	}
}

BOOL CSMSADO::IsConnection()
{
	return m_IsAdoConSuc;
}

HRESULT CSMSADO::ConCommitTrans()
{
	HRESULT hr=-1;
	if (m_IsAdoConSuc)
		hr=m_Connection->CommitTrans(); 
	return hr;
}

⌨️ 快捷键说明

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