读书人

MYSQL VC ADO打开数据集出错解决方案

发布时间: 2012-04-07 17:31:51 作者: rapoo

MYSQL VC ADO打开数据集出错
CString mStrCir;
mStrCir = "select * from circuit";
MessageBox("k10k10");
try
{
m_pRs_cir->Open(_variant_t(mStrCir), _variant_t((IDispatch *)m_pCon.GetInterfacePtr(),true), adOpenKeyset, adLockOptimistic, adCmdTable);
MessageBox("k10k11");
}
catch (_com_error &e)
{
::MessageBox(NULL,"无法打开mytable表。","提示", MB_OK | MB_ICONWARNING);
}

调试到m_pRs_cir->Open(_variant_t(mStrCir), _variant_t((IDispatch *)m_pCon.GetInterfacePtr(),true), adOpenKeyset, adLockOptimistic, adCmdTable);后终止。运行也只能运行到MessageBox("k10k10");
此处目的是为了打开表circuit的数据集,请问各位大哥,我这里哪里有问题,请指点。
还有就是m_pRs_cir->Open(_variant_t(mStrCir), _variant_t((IDispatch *)m_pCon.GetInterfacePtr(),true), adOpenKeyset, adLockOptimistic, adCmdTable);打开MYSQL和MS SQL区别是什么,有时好象又一样,是不是ADO的读写方式都是统一一样的?并不理解m_pRs_cir->Open里各项的具体作用




[解决办法]
这句有问题,如果为空就会出错的
strContent[i]=(char*)_bstr_t(m_pRs_cir->GetCollect((_bstr_t)strColName[i])); //读取字段名
应该加判断
_variant_t GetValue;

GetValue=m_pRs_cir->GetCollect((_bstr_t)strColName[i]);
if(GetValue.vt!=VT_NULL)
strContent[i]=(char*)_bstr_t(GetValue);

读书人网 >VC/MFC

热点推荐