刚开始学习数据库 不知道多表查询怎么操作,第一次也就直接用
CCset cmerSet;
if( !cmerSet.Open(CRecordset::forwardOnly,"select * from goods,order_num where goods.gno= order_num.gno"
,CRecordset::readOnly
))//,,
{ AfxMessageBox("连接数据库失败!");
return 0;
}
对记录集中的数据操作 但是发现成员变量中的数据不是我想的得到的 出现了不匹配的问题
问了老师才知道不能直接多表查询 通过同学提到直接用GetFieldValue()函数对记录集进行提取 果断解决了部分多表查询的问题 甚是欢喜 特此记录
以下是实现过程:
CCset cmerSet;
if( !cmerSet.Open(CRecordset::forwardOnly,
"select * from goods,order_num where goods.gno= order_num.gno"
,CRecordset::readOnly
))
{ AfxMessageBox("连接数据库失败!");
return 0;
}
short nFields = cmerSet.GetODBCFieldCount();//得到总共多少列
CDBVariant varValue;//这里我用的是CString
CString str;
while( !cmerSet.IsEOF() )
{
for(short index = 0; index < nFields; index ++)//对每列进行提取
{
cmerSet.GetFieldValue(index,str);
AfxMessageBox(str);//测试
}
cmerSet.MoveNext();
}
但是 运行 后总是出现一个bug 搞得我不知所云 错误显示:无效的描述符索引 后来上网搜了搜 原来是在机进行数据源选择的时候
只要别勾勾选 Bind all column 就OK了
这篇博客记录了作者在学习MFC ODBC时遇到的多表查询问题。最初尝试直接使用CCset进行多表查询导致数据不匹配,后经指导采用GetFieldValue()函数成功部分解决多表查询问题。在实现过程中,通过Open函数设置查询SQL,遍历记录集获取数据。然而,运行时出现“无效的描述符索引”错误,解决办法是不勾选数据源选择中的“Bind all columns”。
1478

被折叠的 条评论
为什么被折叠?



