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

📄 adors.cpp

📁 Soul的源代码,类似于劲舞团之类的游戏
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// ADORs.cpp

#include <stdio.h>
#include <tchar.h>
#include "ADORs.h"
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};

//------------------------------------------------------------------------------
ADORs::ADORs()
{
	if ( FAILED( m_pRs.CreateInstance(__uuidof(Recordset)) ) )
	{
		printf("Error ADORs CreateInstance !!!!!\n");
	}
	if ( FAILED( m_pCmdPtr.CreateInstance(__uuidof(Command)) ) )
	{
		printf("Error Command CreateInstance !!!!\n");
		m_pCmdPtr = NULL;
	}

	m_RsFlag = false;
	m_picRs = NULL;
}
//------------------------------------------------------------------------------
ADORs::~ADORs()
{
	if( m_picRs ) m_picRs->Release();
//	if( m_RsFlag ) m_pRs->Close();
}
//------------------------------------------------------------------------------
// Sp甫 捞侩茄 Select
// Sp甫 捞侩秦辑 罐酒柯 Record Set篮 啊傍且荐 绝促. 沥焊八祸父阑 倾侩秦具 茄促.
bool ADORs::OpenData(LPCSTR szName, _ConnectionPtr pConn)
{
	m_pCmdPtr->ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_dtestst";
	m_pCmdPtr->CommandTimeout = 15;

	VARIANT	v_szname;
	v_szname.vt = VT_BSTR;
	v_szname.bstrVal = (_bstr_t)szName;

	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@shname", adVarChar, adParamInput, 16, v_szname));
	m_pRs = m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );

	m_pRs->QueryInterface( __uuidof(IADORecordBinding),(LPVOID*)&m_picRs);
	if( m_pRs->BOF )
	{
		m_pRs->Close();
		return false;
	}
	else
	{
		m_picRs->BindToRecordset(&m_BindRs);

		printf("name[%s] age[%d] level[%d] FV[%d] SV[%d] TV[%d] AV0[%d]\n", m_BindRs.m_sz_name, m_BindRs.m_by_age,
			m_BindRs.m_i_level, m_BindRs.m_strt_info.bFvalue, m_BindRs.m_strt_info.bSvalue, m_BindRs.m_strt_info.iTvalue,
			m_BindRs.m_strt_info.bArr[0]);
		SYSTEMTIME st;
		COleDateTime dt(m_BindRs.m_strt_date);
		dt.GetAsSystemTime(st);
		printf("[%d]Y[%d]M[%d]D, [%d]H[%d]M[%d]S\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond );
		m_pRs->Close();
		return true;
	}
}
//------------------------------------------------------------------------------
// Sp甫 捞侩茄 Update sp_pdt
void ADORs::UpdateData(_ConnectionPtr pConn, BYTE *tp, char *name, BYTE bage, int ilevel, UCHAR *pArrdata, DATE date)
{
	m_pCmdPtr->ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_dtesttspdt";//"sp_dtestpdt";
	m_pCmdPtr->CommandTimeout = 15;

	SAFEARRAY FAR	*psa;
	SAFEARRAYBOUND	rgsabound[1];
	rgsabound[0].lLbound = 0;
	rgsabound[0].cElements = 100;
	psa = SafeArrayCreate(VT_UI1, 1, rgsabound);

	BYTE *pb = tp;

	SafeArrayAccessData(psa,reinterpret_cast<void HUGEP**>(&pb) );
	memcpy(pb, pArrdata, 100);
	SafeArrayUnaccessData(psa);

	VARIANT	v_szname,v_byage,v_ilevel,v_arryinfo,v_date;
	v_szname.vt = VT_BSTR;
	v_szname.bstrVal = (_bstr_t)name;
	v_byage.vt = adTinyInt;
	v_byage.bVal = bage;
	v_ilevel.vt = VT_INT;
//	v_ilevel.lVal = ilevel;
	v_ilevel.intVal = ilevel;
	v_arryinfo.vt = VT_ARRAY | VT_UI1;
	v_arryinfo.parray = psa;
	v_date.vt = VT_DATE;
	v_date.date = date;

	// CreateParameter( name of the Parameter, data Type (DataTypeEnum), ParameterDirectionEnum, length, Varian)
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spname", adVarChar, adParamInput, 16, v_szname));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spage", adTinyInt, adParamInput, 1, v_byage));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@splevel", adInteger, adParamInput, 4, v_ilevel));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@sexp", adBinary, adParamInput, 100, v_arryinfo));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spdate", adDate, adParamInput, sizeof(DATE), v_date));

	m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );
	
	//_ParameterPtr pPrm;
//	m_pCmdPtr->Parameters->GetItem("@spage")->Release();
//	m_pCmdPtr->Parameters->GetItem("@splevel")->Release();
//	m_pCmdPtr->GetParameters()->GetItem("@spage")->PutValue(11);
//	m_pCmdPtr->Parameters->GetItem("@splevel")->Release();
//	m_pCmdPtr->Parameters->GetItem("@sexp")->Release();
//	m_pCmdPtr->Parameters->GetItem("@spdate")->Release();


/*	m_pCmdPtr->Release();
	m_pCmdPtr->put_ActiveConnection(ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_dtestst";
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spname", adVarChar, adParamInput, 16, v_szname));
	m_pCmdPtr->GetParameters()->GetItem("@spname")->PutValue("hoon2");


	m_pRs = m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );

	m_pRs->QueryInterface( __uuidof(IADORecordBinding),(LPVOID*)&m_picRs);
	if( m_pRs->BOF ) return;
	else
	{
		m_picRs->BindToRecordset(&m_BindRs);

		printf("name[%s] age[%d] level[%d] FV[%d] SV[%d] TV[%d] AV0[%d]\n", m_BindRs.m_sz_name, m_BindRs.m_by_age,
			m_BindRs.m_i_level, m_BindRs.m_strt_info.bFvalue, m_BindRs.m_strt_info.bSvalue, m_BindRs.m_strt_info.iTvalue,
			m_BindRs.m_strt_info.bArr[0]);
		SYSTEMTIME st;
		COleDateTime dt(m_BindRs.m_strt_date);
		dt.GetAsSystemTime(st);
		printf("[%d]Y[%d]M[%d]D, [%d]H[%d]M[%d]S\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond );
	}*/
//	m_pCmdPtr->GetParameters()->GetItem("@splevel")->PutValue(2222);


//	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spname", adVarChar, adParamInput, 16, v_szname));
//	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spage", adTinyInt, adParamInput, 1, v_byage));
//	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@splevel", adInteger, adParamInput, 4, v_ilevel));
//	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@sexp", adBinary, adParamInput, 100, v_arryinfo));
//	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spdate", adDate, adParamInput, sizeof(DATE), v_date));

	m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );

	SafeArrayDestroy(psa);
}
//------------------------------------------------------------------------------
// Sp甫 捞侩茄 Insert sp_nsrt
void ADORs::AddNewData(_ConnectionPtr pConn, BYTE *tp, char *name, BYTE bage, int ilevel, UCHAR *pArrdata, DATE date)
{
	m_pCmdPtr->ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_dtestnsrt";
	m_pCmdPtr->CommandTimeout = 15;

	SAFEARRAY FAR	*psa;
	SAFEARRAYBOUND	rgsabound[1];
	rgsabound[0].lLbound = 0;
	rgsabound[0].cElements = 100;
	psa = SafeArrayCreate(VT_UI1, 1, rgsabound);

	BYTE *pb = tp;

	SafeArrayAccessData(psa,reinterpret_cast<void HUGEP**>(&pb) );
	memcpy(pb, pArrdata, 100);
	SafeArrayUnaccessData(psa);


	VARIANT	v_szname,v_byage,v_ilevel,v_arryinfo,v_date;
	v_szname.vt = VT_BSTR;
	v_szname.bstrVal = (_bstr_t)name;
	v_byage.vt = adTinyInt;
	v_byage.bVal = bage;
	v_ilevel.vt = VT_INT;
	v_ilevel.llVal = ilevel;
	v_arryinfo.vt = VT_ARRAY | VT_UI1;
	v_arryinfo.parray = psa;
	v_date.vt = VT_DATE;
	v_date.date = date;

	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spname", adVarChar, adParamInput, 16, v_szname));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spage", adTinyInt, adParamInput, 1, v_byage));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@splevel", adInteger, adParamInput, 4, v_ilevel));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@sexp", adBinary, adParamInput, 100, v_arryinfo));
	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@spdate", adDate, adParamInput, sizeof(DATE), v_date));

	m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );
	SafeArrayDestroy(psa);
}
//------------------------------------------------------------------------------
	// 1. item 抛捞喉 抛胶飘
bool ADORs::OpenItem1Data(_bstr_t name, _ConnectionPtr pConn, INVEN_STRT *pData)
{// 150俺甫 阿阿 Binding
	m_pCmdPtr->ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_itemSe";
	m_pCmdPtr->CommandTimeout = 15;

	VARIANT	v_szname;
	v_szname.vt = VT_BSTR;
	v_szname.bstrVal = name;

	m_pCmdPtr->Parameters->Append(m_pCmdPtr->CreateParameter("@oname", adVarChar, adParamInput, 16, v_szname));
	m_pRs = m_pCmdPtr->Execute(NULL, NULL, adCmdStoredProc );

	m_pRs->QueryInterface( __uuidof(IADORecordBinding),(LPVOID*)&m_picRs);
	SysFreeString(v_szname.bstrVal);
	if( m_pRs->BOF )
	{
		m_pRs->Close();
		return false;
	}
	else
	{
		for( int i = 0; i < 150; i ++ )
		{
			m_picRs->BindToRecordset(&m_BindItem);
			pData->Item[i].bItemLevel = m_BindItem.m_b_ItemLevel;
			pData->Item[i].bNmFtOption = m_BindItem.m_b_NmFtOption;
			pData->Item[i].bNmScOption = m_BindItem.m_b_NmScOption;
			pData->Item[i].bNmTrOption = m_BindItem.m_b_NmTrOption;
			pData->Item[i].bSpFrOption = m_BindItem.m_b_SpFrOption;
			pData->Item[i].bSpFtOption = m_BindItem.m_b_SpFtOption;
			pData->Item[i].bSpScOption = m_BindItem.m_b_SpScOption;
			pData->Item[i].bSpTrOption = m_BindItem.m_b_SpTrOption;
			pData->Item[i].dwItemCount = m_BindItem.m_i_ItmeCount;
			pData->Item[i].dwItemCurSp = m_BindItem.m_i_ItemCurSp;
			pData->Item[i].wItemNo = m_BindItem.m_st_ItemNo;
			pData->Item[i].iItemDate = m_BindItem.m_i_ItemDate;
			pData->Item[i].wCurDurability = m_BindItem.m_i_CurDurability;
			pData->Item[i].wItemSN = m_BindItem.m_st_ItemSN;
			m_pRs->MoveNext();
		}
		m_pRs->Close();
		return true;
	}
}
//------------------------------------------------------------------------------
void ADORs::UpdateItem1Data(_ConnectionPtr pConn, _bstr_t name, INVEN_STRT *pData)
{// 150俺 Update
	m_pCmdPtr->ActiveConnection = pConn;
	m_pCmdPtr->CommandText = "sp_itemUp";
	m_pCmdPtr->CommandTimeout = 15;

⌨️ 快捷键说明

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