C++代码中包含嵌入SQL语句,要实现的话,除了VS、数据库这两个软件外,还需要编译SQL语句的软件吗?
C++代码中包含嵌入SQL语句,要实现的话,除了VS、数据库这两个软件外,还需要编译SQL语句的软件吗?
还是有vs、数据库这两个就可以了?
[解决办法]
ado或者其它的接口
或者有数据库的api
sql语句就是一个字符串
[解决办法]
JAVA嵌套 oracle,linux c 牵头oracle ,以及 c++嵌套oracle ,第一个 网上搜下 很简单 ,第二个 要用到 proc ,第三个 我只有 嵌套 sql的
//修改资料
bool CDataBaseSink::OnRequestModifyIndividual(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//参数验证
ASSERT(wDataSize == sizeof(DBR_GP_ModifyIndividual));
if ( wDataSize != sizeof(DBR_GP_ModifyIndividual)) return false;
//类型转换
DBR_GP_ModifyIndividual *pModifyIndividual = (DBR_GP_ModifyIndividual*)pData;
//执行存储过程
LONG lReturnValue = -1;
try
{
lReturnValue = SPModifyIndividual(pModifyIndividual->dwUserID, pModifyIndividual->szNickname, pModifyIndividual->nGender,
pModifyIndividual->nAge, pModifyIndividual->szAddress, pModifyIndividual->szUnderWrite, pModifyIndividual->szPassword);
}
catch (IDataBaseException * pIException)
{
//错误信息
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
}
//成功判断
if ( lReturnValue == 0 )
{
DBR_GP_ModifyIndividualResult ModifyIndividualResult;
ZeroMemory(&ModifyIndividualResult, sizeof(ModifyIndividualResult));
lstrcpyn(ModifyIndividualResult.szDescribeMsg, TEXT("资料修改成功!"), sizeof(ModifyIndividualResult.szDescribeMsg));
ModifyIndividualResult.bOperateSuccess = true;
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_MODIFY_RESULT,dwContextID,
&ModifyIndividualResult,sizeof(ModifyIndividualResult));
}
else
{
DBR_GP_ModifyIndividualResult ModifyIndividualResult;
ZeroMemory(&ModifyIndividualResult, sizeof(ModifyIndividualResult));
lstrcpyn(ModifyIndividualResult.szDescribeMsg, TEXT("由于数据库操作异常,修改失败!"), sizeof(ModifyIndividualResult.szDescribeMsg));
ModifyIndividualResult.bOperateSuccess = false;
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_MODIFY_RESULT,dwContextID,
&ModifyIndividualResult,sizeof(ModifyIndividualResult));
}
return true;
}
//帐号存储过程
LONG CDataBaseSink::SPLogonByAccounts(LPCTSTR pszAccounts, LPCTSTR pszPassword, DWORD dwClientIP, LPCTSTR pszComputerID)
{
//校验参数
ASSERT(pszAccounts!=NULL);
ASSERT(pszPassword!=NULL);
//转化地址
TCHAR szClientIP[16]=TEXT("");
BYTE * pClientIP=(BYTE *)&dwClientIP;
_snprintf(szClientIP,sizeof(szClientIP),TEXT("%d.%d.%d.%d"),pClientIP[0],pClientIP[1],pClientIP[2],pClientIP[3]);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@strAccounts"),pszAccounts);
m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pszPassword);
m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientIP);
m_AccountsDBAide.AddParameter(TEXT("@strMachineSerial"),pszComputerID);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_EfficacyAccounts"),true);
}
//更新存储过程
LONG CDataBaseSink::SPRegisterAccounts(LPCTSTR pszAccounts, LPCTSTR pszPassword, LPCTSTR pszSpreader, WORD wFaceID, BYTE cbGender, DWORD dwClientIP, LPCTSTR pszComputerID)
{
//校验参数
ASSERT(pszAccounts!=NULL);
ASSERT(pszPassword!=NULL);
//转化地址
TCHAR szClientIP[16]=TEXT("");
BYTE * pClientIP=(BYTE *)&dwClientIP;
_snprintf(szClientIP,sizeof(szClientIP),TEXT("%d.%d.%d.%d"),pClientIP[0],pClientIP[1],pClientIP[2],pClientIP[3]);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@strAccounts"),pszAccounts);
m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pszPassword);
m_AccountsDBAide.AddParameter(TEXT("@strSpreader"),pszSpreader);
m_AccountsDBAide.AddParameter(TEXT("@nFaceID"),wFaceID);
m_AccountsDBAide.AddParameter(TEXT("@cbGender"),cbGender);
m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientIP);
m_AccountsDBAide.AddParameter(TEXT("@strMachineSerial"),pszComputerID);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_RegisterAccounts"),true);
}
//I D 存储过程
LONG CDataBaseSink::SPLogonByUserID(DWORD dwGameID, LPCTSTR pszPassword, DWORD dwClientIP, LPCTSTR pszComputerID)
{
//校验参数
ASSERT(dwGameID!=0L);
ASSERT(pszPassword!=NULL);
//转化地址
TCHAR szClientIP[16]=TEXT("");
BYTE * pClientIP=(BYTE *)&dwClientIP;
_snprintf(szClientIP,sizeof(szClientIP),TEXT("%d.%d.%d.%d"),pClientIP[0],pClientIP[1],pClientIP[2],pClientIP[3]);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwGameID"),dwGameID);
m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pszPassword);
m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientIP);
m_AccountsDBAide.AddParameter(TEXT("@strMachineSerial"),pszComputerID);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_EfficacyGameID"),true);
}
单文强 11:31:53
//上传存储过程
LONG CDataBaseSink::SPUploadFace(DWORD dwUserID, BYTE *bFaceData, DWORD dwFaceDataSize)
{
//校验参数
ASSERT(dwUserID!=0L);
ASSERT(dwFaceDataSize!=0L);
ASSERT(bFaceData!=NULL);
//校验参数
ASSERT(dwUserID!=0L);
ASSERT(dwFaceDataSize!=0L);
ASSERT(bFaceData!=NULL);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),dwUserID);
VARIANT varChunk;
SAFEARRAY *psa=NULL;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].cElements = dwFaceDataSize;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);
for (long index =0; index < long(dwFaceDataSize); index++ )
{
SafeArrayPutElement(psa,&index,&bFaceData[index]);
}
varChunk.vt = VT_ARRAY|VT_UI1;
varChunk.parray = psa;
IDataBase * pIDataBase=m_AccountsDBModule.GetInterface();
pIDataBase->AddParameter(TEXT("@imgCustomFaceImage"),adLongVarBinary,adParamInput,dwFaceDataSize,_variant_t(varChunk));
LONG lReturnValue=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_CF_InsertCustomFace"),false);
//释放资源
SafeArrayDestroy(psa);
return lReturnValue;
}
//加载存储过程
LONG CDataBaseSink::SPDownloadFace(DWORD dwUserID)
{
//校验参数
ASSERT(dwUserID!=0L);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),dwUserID);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_CF_LoadCustomFace"),true);
}
//删除存储过程
LONG CDataBaseSink::SPDeleteCustomFace(DWORD dwUserID)
{
//校验参数
ASSERT(dwUserID!=0L);
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),dwUserID);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_CF_DeleteCustomFace"),true);
}
//修改存储过程
LONG CDataBaseSink::SPModifyIndividual(DWORD dwUserID, TCHAR szNickname[NAME_LEN], int nGender, int nAge, TCHAR szAddress[64], TCHAR szUnderWrite[32], TCHAR szPassword[32])
{
//执行存储过程
m_AccountsDBAide.ResetParameter();
m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),dwUserID);
m_AccountsDBAide.AddParameter(TEXT("@strLogonPass"),szPassword);
m_AccountsDBAide.AddParameter(TEXT("@strNickName"),szNickname);
m_AccountsDBAide.AddParameter(TEXT("@nGender"),nGender);
m_AccountsDBAide.AddParameter(TEXT("@nAge"),nAge);
m_AccountsDBAide.AddParameter(TEXT("@strAddress"),szAddress);
m_AccountsDBAide.AddParameter(TEXT("@strUnderWrite"),szUnderWrite);
return m_AccountsDBAide.ExecuteProcess(TEXT("GSP_CF_ModifyIndividual"),false);
}
[解决办法]
除了编译器和数据库以外,还需要数据库提供的接口sdk,比如sqlite提供的接口函数。
或者数据库符合某种标准(比如ODBC),则可用这种标准的接口访问,比如vc下的ODBC方式