最近写个C/S结构的东东,服务器端采用ACE+MSSQL来编写;
数据采用msado15.dll库
网络使用ACE;
发现服务程序Release和Debug版本运行结果不一样。。
郁闷,如下面是个用户认证的函数;
当Debug版本时候一切正常;
当Release版本时候,recordset->Open是成功但,数据集总是空的,明明用户是存在的啊。。况且Debug版本是能查询到这个用户的。。
大家帮我看看,谢啦??
int wytDatabase::AuthenUser(const TUserInfo &user)
{
int nRet = 0;
char strsql[1024] = "";
sprintf(strsql, "SELECT * FROM Userlist where ID=%d and PassWord=%s",
user.id, user.password); 
try
{
_RecordsetPtr recordset;
recordset.CreateInstance("ADODB.Recordset"); // 创建Recordset对象
HRESULT hr = recordset->Open(_variant_t(strsql),
connect_.GetInterfacePtr(),
adOpenStatic,
adLockOptimistic,
adCmdText);
if (FAILED(hr))
{
nRet = -1;
}
else
{
if (recordset->adoEOF == VARIANT_FALSE)  // 有数据
{
// 改变用户状态
sprintf(strsql, "update Userlist set flag=1 where id=%d", user.id);
_variant_t RecordsAffected;
connect_->Execute((_bstr_t)strsql, &RecordsAffected, adCmdText);
nRet = 0;
}
else
{
nRet = -2;
}
recordset->Close();
}
}
catch(_com_error e)
{
nRet = -2; // 数据库出错
}
return nRet;
}