问题描述:
_RecordsetPtr pRecordSetRemainingSum;//A表的集 //SQL语句
CString ctr_searchRemainingSum;
ctr_searchRemainingSum=CString("select Remain from Citizen where Name=");
ctr_searchRemainingSum+=CString("'");
ctr_searchRemainingSum+=info.m_citizen.GetCitizenName();
ctr_searchRemainingSum+=CString("'"); //查询Num
pRecordSetRemainingSum->Open(_variant_t(ctr_searchRemainingSum),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic, adModeUnknown);
pRecordSetRemainingSum->MoveFirst(); //得到Num
_variant_t vp_citizenRemain=pRecordSetRemainingSum->Fields->GetItem(_variant_t("Remain"))->Value;
pRecordSetRemainingSum->Close(); //添加NUM,m_pRecordSet为B表的集
m_pRecordSet->Fields->GetItem(_variant_t("Remain"))->PutValue(_variant_t(vp_citizenRemain));我try了一下,catch到了一个内容为空白的exception
即catch (_com_error &e)
e.Description()是没内容的
_RecordsetPtr pRecordSetRemainingSum;//A表的集 //SQL语句
CString ctr_searchRemainingSum;
ctr_searchRemainingSum=CString("select Remain from Citizen where Name=");
ctr_searchRemainingSum+=CString("'");
ctr_searchRemainingSum+=info.m_citizen.GetCitizenName();
ctr_searchRemainingSum+=CString("'"); //查询Num
pRecordSetRemainingSum->Open(_variant_t(ctr_searchRemainingSum),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic, adModeUnknown);
pRecordSetRemainingSum->MoveFirst(); //得到Num
_variant_t vp_citizenRemain=pRecordSetRemainingSum->Fields->GetItem(_variant_t("Remain"))->Value;
pRecordSetRemainingSum->Close(); //添加NUM,m_pRecordSet为B表的集
m_pRecordSet->Fields->GetItem(_variant_t("Remain"))->PutValue(_variant_t(vp_citizenRemain));我try了一下,catch到了一个内容为空白的exception
即catch (_com_error &e)
e.Description()是没内容的
这个只是服务器端的部分代码
这个代码的激活要客户端的某些动作
结果程序直接走到throw exception(没理断点)
try
{
........................
}
catch(_com_error &e)
{
CString strErrDescribe;
strErrDescribe.Format("Exception thrown for classes generated by #import"
"\tCode = %81x\n"
"\tCode meaning = %s\n"
"\tSource = %s\n"
"\tDescription = %s\n",
e.Error(),
e.ErrorMessage(),
(LPCTSTR)(e.Source()),
(LPCTSTR)(e.Description()));
TRACE("%s %s\r\n", (LPCTSTR)e.Source(),(LPCSTR)e.Description());
char sLog[1024] = {0};
sprintf(sLog, "%s %s %s", e.ErrorMessage(),(LPCTSTR)e.Source(), (LPCSTR)e.Description());
............
}
catch(...)
{
.......
}
INSERT INTO B (SELECT * FROM A WEHRE )
pRecordSetRemainingSum->MoveFirst();
有问题?!
_RecordsetPtr pRecordSetRemainingSum;//A表的集 //SQL语句
CString ctr_searchRemainingSum;
ctr_searchRemainingSum=CString("select top 1 Remain from Citizen where Name=");
ctr_searchRemainingSum+=CString("'");
ctr_searchRemainingSum+=info.m_citizen.GetCitizenName();
ctr_searchRemainingSum+=CString("'"); //查询Num
pRecordSetRemainingSum->Open(_variant_t(ctr_searchRemainingSum),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic, adModeUnknown);
//pRecordSetRemainingSum->MoveFirst();
if (!pRecordSetRemainingSum->rsEoF)
{
pRecordSetRemainingSum->Close();
return;
} //得到Num
_variant_t vp_citizenRemain=pRecordSetRemainingSum->GetFields()->GetItem(_variant_t("Remain"))->Value;
pRecordSetRemainingSum->Close(); //添加NUM,m_pRecordSet为B表的集
m_pRecordSet->GetFields()->GetItem(_variant_t("Remain"))->PutValue(_variant_t(vp_citizenRemain));
试试
是“无效指针,null,null”
谢谢三楼 tanwei1002的
详细Exception,今天学了一招
谢谢 rebort_Q 百忙之中抽空在线解答
两位,一共20分,很少,但是一番心意正解:
Exception的内容是“空指针,null,null”,根据这个思路搜到了答案
因为ado是dll,需要初始化(或者说是 实例化),_RecordsetPtr pRecordSetRemainingSum
没有初始化就直接用了
加上“pRecordSetRemainingSum..CreateInstance(__uuidof(Recordset))”就OK了