MFC ODBC 多表查询 使用成员函数GetFieldValue()

来源:互联网 发布:java中嵌套if 编辑:程序博客网 时间:2024/05/29 18:32

刚开始学习数据库    不知道多表查询怎么操作,第一次也就直接用

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了