给你一个例子:
_variant_t Index; Index.vt=VT_I2;
for (int i=0;i<pRecordset->GetFields ()->Count;i++) {
Index.iVal =i;
FieldPtr FieldVal = pRecordset->GetFields()->GetItem(Index);
if ( FieldVal->ActualSize !=0 )
{ // field is not empty
strField[i].Format ("%s",(char*)(_bstr_t)FieldVal->Value) ;
}
else
{ // field is empty ,setItemText is space
strField[i]=" ";
}
}
这里 strField[i]
是一个数组,我取每条纪录放入数组中
_variant_t Index; Index.vt=VT_I2;
for (int i=0;i<pRecordset->GetFields ()->Count;i++) {
Index.iVal =i;
FieldPtr FieldVal = pRecordset->GetFields()->GetItem(Index);
if ( FieldVal->ActualSize !=0 )
{ // field is not empty
strField[i].Format ("%s",(char*)(_bstr_t)FieldVal->Value) ;
}
else
{ // field is empty ,setItemText is space
strField[i]=" ";
}
}
这里 strField[i]
是一个数组,我取每条纪录放入数组中
_variant_t Index;
Index.vt=VT_I2; FieldPtr FieldVal=m_pRec->GetFields()->GetItem(Index);
if ( FieldVal->ActualSize !=0 )
{
strName.Format ( "%s",(char*)(_bstr_t)FieldVal->Value) ;
}一运行出了许多错啊。FieldPtr是什么类,MSDN都查不到的。还有_variant_t,需要包含ComDEF.h,VC里对数据操作这么麻烦哪?象MSDN的例子那样用rs.GetFieldValue不行吗?似乎那样要简单一些,只是不明白该怎样写
Somebody....
Anybody....这是最基本的数据库操作吧,50分丢在马路上都没有人捡么?
oracle的表名和列名都是大写的(内部转换了),所以最好用idx;
我是使用ADO操作数据库,当初是别人的代码,也没有仔细看
能使用就可以了
没有想到在你那里又这问题
我问问先
所以我可以使用
而你不是使用ADO因此你那里会错我使用FieldPtr 的目的主要是检测字段是否为空
如果你不检测
可以这样访问
pRecordset->GetFields()->GetItem(Index)->Value
是一样的
注意Index
_variant_t Index;
Index.vt=VT_I2;
Index.iVal =i;需要指定你要访问的列
MySet.CreateInstance(__uuidof(Recordset));
MySet->Open("SELECT * FROM ftp",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic, adCmdText);
MySet->GetCollect("字段名");
CString sValue=(char *)_bstr_t(TheValue);
sValue.TrimRight();
sValue就是字段值了