ACCESS数据库
我在C++控制台下能得出值来,但在MFC下就不行了lColumn能读出字段的数量,也是对的,但就是获取字段名时就出错了
代码如下m_pAccessRs->Fields->Item[i]->Name;获取字段名时就出异常 try
{
GetTableInfo(m_pAccessConn,aTable->name );
CString s;
s="select * from ";
s=s+aTable->name;
s=s+(CString)" where 1=0";
m_pAccessRs->Open((_variant_t)aTable -> name, m_pAccessConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
int lColumn = m_pAccessRs -> Fields-> Count;
for(int i = 0; i < lColumn; i++)
{
CString *FieldName = new CString();
CString tmp;
tmp = (LPCTSTR)(_bstr_t)m_pAccessRs->Fields->Item[i]->Name;
FieldName = &tmp;
aTable->Field .Add (FieldName);
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
哪位大侠帮我看下,错在哪里呀,要怎么改呀,有没有别的方法呀。
我在C++控制台下能得出值来,但在MFC下就不行了lColumn能读出字段的数量,也是对的,但就是获取字段名时就出错了
代码如下m_pAccessRs->Fields->Item[i]->Name;获取字段名时就出异常 try
{
GetTableInfo(m_pAccessConn,aTable->name );
CString s;
s="select * from ";
s=s+aTable->name;
s=s+(CString)" where 1=0";
m_pAccessRs->Open((_variant_t)aTable -> name, m_pAccessConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
int lColumn = m_pAccessRs -> Fields-> Count;
for(int i = 0; i < lColumn; i++)
{
CString *FieldName = new CString();
CString tmp;
tmp = (LPCTSTR)(_bstr_t)m_pAccessRs->Fields->Item[i]->Name;
FieldName = &tmp;
aTable->Field .Add (FieldName);
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
哪位大侠帮我看下,错在哪里呀,要怎么改呀,有没有别的方法呀。
异常弹出来的是
“在对应所需名称或序数的集合中,未找到项目”
for(int i = 0; i < lColumn; i++)
//-->
for(long i = 0; i < lColumn; i++)
-------------------
你的结果集应该是空的吧?
这样从结果集里取数自然是找不到项目了~
s=s+aTable->name;
这句有问题,你调试一下看看,是不是s不是预想的字串
只能用long,我也遇到这个问题。
这数据库是如何设计的?