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

📄 clsadooperater.cpp

📁 Oracle OCI 应用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		CComVariant ccvar;
		ccvar = "";
		ccvar.Detach(pszName);
		ccvar.Clear();

		ccvar = "";
		ccvar.Detach(pszPhone);
		ccvar.Clear();

		::SysFreeString(szBhType);
		::SysFreeString(szTableId);
		::SysFreeString(szXh);
		::SysFreeString(szKeyWords);

		return S_FALSE;
	}

	CComVariant ccvar;
	// 6. 取输出参数
	try 
	{
		GetProcResult(g_pStmt,m_parameters,iParaCount);
		ccvar = m_parameters[4].paramValue.c_str();
		ccvar.Detach(pszName);
		ccvar.Clear();

		ccvar = m_parameters[5].paramValue.c_str();
		ccvar.Detach(pszPhone);
		ccvar.Clear();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "";
		ccvar.Detach(pszName);
		ccvar.Clear();

		ccvar = "";
		ccvar.Detach(pszPhone);
		ccvar.Clear();
		
		::SysFreeString(szBhType);
		::SysFreeString(szTableId);
		::SysFreeString(szXh);
		::SysFreeString(szKeyWords);
		return S_FALSE;
	}

	::SysFreeString(szBhType);
	::SysFreeString(szTableId);
	::SysFreeString(szXh);
	::SysFreeString(szKeyWords);

	//释放ICallableStatement
	g_pStmt->Close();
	//释放连接
	g_pConn->Close();

	return S_OK;
}

STDMETHODIMP CClsAdoOperater::PKSendSMS(BSTR szBhType, BSTR szXh, BSTR szFlm,
									   BSTR szKeyWords, BSTR szCallingPhone, 
									   BSTR szUserType, BSTR szPoint, 
									   VARIANT *plRet)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

	std::string m_strProcedureName = "PK_query.sendsms";
	db::ParamStruct m_parameters[8];
	int iParaCount = 8;

	//报号类型
	SetParaContent(m_parameters[0],db::PT_IN,
					_com_util::ConvertBSTRToString(szBhType),db::DT_STRING,"");
	//序号
	SetParaContent(m_parameters[1],db::PT_IN,
					_com_util::ConvertBSTRToString(szXh),db::DT_STRING,"");
	//分类码
	SetParaContent(m_parameters[2],db::PT_IN,
					_com_util::ConvertBSTRToString(szFlm),db::DT_STRING,"");
	//关键词
	SetParaContent(m_parameters[3],db::PT_IN,
					_com_util::ConvertBSTRToString(szKeyWords),db::DT_STRING,"");
	//接收sms的手机号码
	SetParaContent(m_parameters[4],db::PT_IN,
					_com_util::ConvertBSTRToString(szCallingPhone),db::DT_STRING,"");
	//用户类型
	SetParaContent(m_parameters[5],db::PT_IN,
					_com_util::ConvertBSTRToString(szUserType),db::DT_STRING,"");
	//查号台id:1=南泰;2=黄兴;3=万里;
	SetParaContent(m_parameters[6],db::PT_IN,
					_com_util::ConvertBSTRToString(szPoint),db::DT_STRING,"");
	//返回结果1=成功;0=失败;
	SetParaContent(m_parameters[7],db::PT_OUT,"",db::DT_INT,"");

	// 2. 产生执行存储过程的sql语句
	std::string sql = g_DbDriver->GenStoredProcedureSql(m_strProcedureName,iParaCount);

	// 3. 编译sql
	try 
	{
		g_pStmt = g_pConn->PrepareCall(sql);
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		//g_dbStatProbe.SetOff(m_strDSN);
//
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(plRet);
		ccvar.Clear();

		::SysFreeString(szBhType);
		::SysFreeString(szXh);
		::SysFreeString(szFlm);
		::SysFreeString(szKeyWords);
		::SysFreeString(szCallingPhone);
		::SysFreeString(szUserType);
		::SysFreeString(szPoint);

		return S_FALSE;
	}

	// 4. 设置输入参数并注册输出参数
	try 
	{
		SetInputAndRegOuput(g_pStmt,m_parameters,iParaCount);
	} 
	catch (const db::SqlException &e) 
	{
		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(plRet);
		ccvar.Clear();

		::SysFreeString(szBhType);
		::SysFreeString(szXh);
		::SysFreeString(szFlm);
		::SysFreeString(szKeyWords);
		::SysFreeString(szCallingPhone);
		::SysFreeString(szUserType);
		::SysFreeString(szPoint);

		return S_FALSE;
	}

	// 5. execute
	try 
	{
		g_pStmt->Execute();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(plRet);
		ccvar.Clear();

		::SysFreeString(szBhType);
		::SysFreeString(szXh);
		::SysFreeString(szFlm);
		::SysFreeString(szKeyWords);
		::SysFreeString(szCallingPhone);
		::SysFreeString(szUserType);
		::SysFreeString(szPoint);

		return S_FALSE;
	}

	CComVariant ccvar;
	// 6. 取输出参数
	try 
	{
		GetProcResult(g_pStmt,m_parameters,iParaCount);
		ccvar = m_parameters[7].paramValue.c_str();
		ccvar.Detach(plRet);
		ccvar.Clear();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(plRet);
		ccvar.Clear();
		
		::SysFreeString(szBhType);
		::SysFreeString(szXh);
		::SysFreeString(szFlm);
		::SysFreeString(szKeyWords);
		::SysFreeString(szCallingPhone);
		::SysFreeString(szUserType);
		::SysFreeString(szPoint);
		return S_FALSE;
	}

	::SysFreeString(szBhType);
	::SysFreeString(szXh);
	::SysFreeString(szFlm);
	::SysFreeString(szKeyWords);
	::SysFreeString(szCallingPhone);
	::SysFreeString(szUserType);
	::SysFreeString(szPoint);

	//释放ICallableStatement
	g_pStmt->Close();
	//释放连接
	g_pConn->Close();

	return S_OK;
}

STDMETHODIMP CClsAdoOperater::PKGetIDLenth(BSTR szMainID, VARIANT *pszLength)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

	std::string m_strProcedureName = "tp_getidlength";
	db::ParamStruct m_parameters[2];
	int iParaCount = 2;

	//组编号
	SetParaContent(m_parameters[0],db::PT_IN,
		_com_util::ConvertBSTRToString(szMainID),db::DT_INT,"");
	//返回多少条数据
	SetParaContent(m_parameters[1],db::PT_OUT,"",db::DT_INT,"");

	// 2. 产生执行存储过程的sql语句
	std::string sql = g_DbDriver->GenStoredProcedureSql(m_strProcedureName,iParaCount);

	// 3. 编译sql
	try 
	{
		g_pStmt = g_pConn->PrepareCall(sql);
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		//g_dbStatProbe.SetOff(m_strDSN);
//
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(pszLength);
		ccvar.Clear();

		::SysFreeString(szMainID);

		return S_FALSE;
	}

	// 4. 设置输入参数并注册输出参数
	try 
	{
		SetInputAndRegOuput(g_pStmt,m_parameters,iParaCount);
	} 
	catch (const db::SqlException &e) 
	{
		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(pszLength);
		ccvar.Clear();

		::SysFreeString(szMainID);

		return S_FALSE;
	}

	// 5. execute
	try 
	{
		g_pStmt->Execute();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(pszLength);
		ccvar.Clear();

		::SysFreeString(szMainID);

		return S_FALSE;
	}

	CComVariant ccvar;
	// 6. 取输出参数
	try 
	{
		GetProcResult(g_pStmt,m_parameters,iParaCount);
		ccvar = m_parameters[1].paramValue.c_str();
		ccvar.Detach(pszLength);
		ccvar.Clear();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "-1";
		ccvar.Detach(pszLength);
		ccvar.Clear();
		
		::SysFreeString(szMainID);

		return S_FALSE;
	}

	::SysFreeString(szMainID);

	//释放ICallableStatement
	g_pStmt->Close();
	//释放连接
	g_pConn->Close();

	return S_OK;
}

STDMETHODIMP CClsAdoOperater::PKGetData(BSTR szMainID,BSTR szFromIndex,
										BSTR szLength,VARIANT *pszFieldName,
										VARIANT *pszFieldValue)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

	std::string m_strProcedureName = "tp_getdata";
	db::ParamStruct m_parameters[5];
	int iParaCount = 5;

	//组编号
	SetParaContent(m_parameters[0],db::PT_IN,
					_com_util::ConvertBSTRToString(szMainID),db::DT_INT,"");
	//组内起始索引号
	SetParaContent(m_parameters[1],db::PT_IN,
					_com_util::ConvertBSTRToString(szFromIndex),db::DT_INT,"");
	//长度len
	SetParaContent(m_parameters[2],db::PT_IN,
					_com_util::ConvertBSTRToString(szLength),db::DT_INT,"");
	//字段名
	SetParaContent(m_parameters[3],db::PT_OUT,"",db::DT_STRING,"");
	//字段值
	SetParaContent(m_parameters[4],db::PT_OUT,"",db::DT_STRING,"");

	// 2. 产生执行存储过程的sql语句
	std::string sql = g_DbDriver->GenStoredProcedureSql(m_strProcedureName,iParaCount);

	// 3. 编译sql
	try 
	{
		g_pStmt = g_pConn->PrepareCall(sql);
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		//g_dbStatProbe.SetOff(m_strDSN);
//
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "";
		ccvar.Detach(pszFieldName);
		ccvar.Clear();

		ccvar = "";
		ccvar.Detach(pszFieldValue);
		ccvar.Clear();

		::SysFreeString(szMainID);
		::SysFreeString(szFromIndex);
		::SysFreeString(szLength);

		return S_FALSE;
	}

	// 4. 设置输入参数并注册输出参数
	try 
	{
		SetInputAndRegOuput(g_pStmt,m_parameters,iParaCount);
	} 
	catch (const db::SqlException &e) 
	{
		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "";
		ccvar.Detach(pszFieldName);
		ccvar.Clear();

		ccvar = "";
		ccvar.Detach(pszFieldValue);
		ccvar.Clear();

		::SysFreeString(szMainID);
		::SysFreeString(szFromIndex);
		::SysFreeString(szLength);

		return S_FALSE;
	}

	// 5. execute
	try 
	{
		g_pStmt->Execute();
	} 
	catch (const db::SqlException &e) 
	{
//		//置数据库状态为Off
//		g_dbStatProbe.SetOff(m_strDSN);
//
		//释放ICallableStatement
		g_pStmt->Close();
		//释放连接
		g_pConn->Close();

		CComVariant ccvar;
		ccvar = "";
		ccvar.Detach(pszFieldName);
		ccvar.Clear();

		ccvar = "";
		ccvar.Detach(pszFieldValue);
		ccvar.Clear();

		::SysFreeString(szMainID);
		::SysFreeString(szFromIndex);
		::SysFreeString(szLength);

		return S_FALSE;
	}

	CComVariant ccvar;
	// 6. 取输出参数
	try 
	{
		GetProcResult(g_pStmt,m_parameters,iParaCount);
		ccvar = m_parameters[3].paramValue.c_str();
		ccvar.Detach(pszFieldName);
		ccvar.Clear();

		ccvar = m_parameters[4].paramValue.c_str();

⌨️ 快捷键说明

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