_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型,
VARIANT和BSTR这两种类型是COM中使用的数据类型。
实现_variant_t向int,String ,double,long,byte等类型转换
为了C++中的变量应用到ADO编程中,只能进行数据类型的转换。
通过_variant_t和_bstr_t这两个类,就可
_variant_t var; var=m_pRecordset->GetCollect ("UserName"); ss=(TCHAR*)(_bstr_t)vUsername;//转换成字符串
以方便的把C++类型变量转换成COM中的变量了。
UpdateData(); CString strCmd = L"select * from n where 材料=‘"; strCmd += m_Querymaterial; strCmd += "‘"; m_pRecordset = m_pConnection->Execute(_bstr_t(strCmd), &RecordsAffected, adCmdText);
_variant_t vM,vN; try { while(!m_pRecordset->adoEOF) { //取得第0列的值,从0开始计数 vM=m_pRecordset->GetCollect(_variant_t((long)0)); //取得“折射率”这一列的值 vN=m_pRecordset->GetCollect("折射率"); CString strtemp; if (vM.vt!=VT_NULL) { strtemp.Format(_T("%s"),vM.lVal); } if (vN.vt!=VT_NULL) { strtemp+=" "; strtemp+=(LPCTSTR)(_bstr_t)vN; } m_list1.AddString(strtemp); m_list1.AddString(_T("\n")); m_pRecordset->MoveNext();//移动到下一条记录 } } catch(_com_error &e) { AfxMessageBox(e.Description()); return; } if (m_pRecordset->Close()) { m_pRecordset->Close(); m_pRecordset=NULL; } if (m_pConnection->State) { m_pConnection->Close(); m_pConnection=NULL; } }
时间: 2024-10-28 11:55:24