📄 adors.cpp
字号:
// 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 + -