怎么实现ADO 数据类型与VC中的数据类型的转换? 怎么实现ADO 数据类型与VC中的数据类型的转换?请各位高手能否给出详细的答案?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 _bstr_t_variant_t等转换 ado中的数据类型被读取到_variant_t结构中。举例如下:_variant_t vParam;vParam=m_pRecordset->GetCollect("字段A");若字段A为整型: int i; i=vParam.iVal;若字段A为字符型: CString str; str=vParam.bstrVal;若字段A为时间类型: COleDateTime sqlTime(vParam); //CTime-->_variant_tCTime time(CTime::GetCurrentTime());SYSTEMTIME timeDest;time.GetAsSystemTime(timeDest);double vtime;SystemTimeToVariantTime(&timeDest,&vtime);_variant_t var_time(vtime,VT_DATE);// COleCurrency ---> double COleCurrency m_cur(4,500); double dval = ((double)m_cur.m_cur.int64)/10000; CString s; s.Format("%.4f",dval); AfxMessageBox(s); SAFEARRAY* psa; SAFEARRAYBOUND bounds = {8, 0}; psa = SafeArrayCreate(VT_BSTR, 1, &bounds); BSTR* bstrArray; SafeArrayAccessData(psa, reinterpret_cast<void**>(&bstrArray)); int i = 0; for(it = 0; it != 8; it++, i++) { bstrArray[i] = SysAllocString(T2OLE("VALUES")); } SafeArrayUnaccessData(psa); 该程序段说明了如何从字段检索数值并将数值转换为 C++ 变量。#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")#include <stdio.h>Class CEmployee{public: FetchEmployeeData(); char m_szFirstName[30]; char m_szLastName[30]; int nAge;};CEmployee::FetchEmployeeData(){_ConnectionPtr pCon();_RecordsetPtr pRs();FieldPtr pfldFirstName, pfldLastName, pfldAge;_variant_t vFirstName, vLastName, vAge;pCon.CreateInstance(__uuidof(Connection));pCon->Open(“pubs”, “sa”, “”);pRs.CreateInstance(__uuidof(Recordset));pRs->Open(“select FirstName, LastName, Age from Employees”, pCon, adOpenForwardOnly, adLockReadOnly, adCmdUnknown);pfldFirstName = pRs->Fields->GetItem(0);pfldLastName = pRs->Fields->GetItem(1);pfldAge = pRs->Fields->GetItem(2);while (VARIANT_FALSE == pRs->EndOfFile) { vFirstName.Clear(); vLastName.Clear(); vAge.Clear(); vFirstName = pfldFirstName->Value; WideCharToMultiByte(CP_ACP, 0, vFirstName.bstrVal, -1, m_szFirstName, sizeof(m_szFirstName), NULL, NULL); vLastName = pfldLastName->Value; WideCharToMultiByte(CP_ACP, 0, vLastName.bstrVal, -1, m_szLastName, sizeof(m_szLastName), NULL, NULL); nAge = vAge.iVal; pRs->MoveNext(); }} 关于CEdit内容追加 -- 简单而又不简单的问题 关于服务器的响应,解决即给分 WinCE下面读写COM口的问题 那些“电子书制作“的软件是怎么写的。谁有思路。谢谢!! 请问在vc下怎么判断字符串是中文还是英文的? 如何在定义的时候指定结构体中成员变量的值? 串口通信可否改为进程间通信 怎样才能学好vc、mfc? 怎样在视图中用鼠标拖动来任意移动Bitmap和Icon呢?谢谢高手指引。希望附代码。 构造函数和this的问题 怎么得到一个进程的父进程的ID 图像计算问题!!!
_variant_t
等转换
举例如下:
_variant_t vParam;vParam=m_pRecordset->GetCollect("字段A");若字段A为整型:
int i;
i=vParam.iVal;若字段A为字符型:
CString str;
str=vParam.bstrVal;若字段A为时间类型:
COleDateTime sqlTime(vParam);
CTime time(CTime::GetCurrentTime());
SYSTEMTIME timeDest;
time.GetAsSystemTime(timeDest);
double vtime;
SystemTimeToVariantTime(&timeDest,&vtime);
_variant_t var_time(vtime,VT_DATE);// COleCurrency ---> double
COleCurrency m_cur(4,500);
double dval = ((double)m_cur.m_cur.int64)/10000;
CString s;
s.Format("%.4f",dval);
AfxMessageBox(s);
SAFEARRAY* psa;
SAFEARRAYBOUND bounds = {8, 0};
psa = SafeArrayCreate(VT_BSTR, 1, &bounds);
BSTR* bstrArray;
SafeArrayAccessData(psa, reinterpret_cast<void**>(&bstrArray));
int i = 0;
for(it = 0; it != 8; it++, i++)
{
bstrArray[i] = SysAllocString(T2OLE("VALUES"));
}
SafeArrayUnaccessData(psa);
no_namespace rename("EOF", "EndOfFile")
#include <stdio.h>Class CEmployee
{
public:
FetchEmployeeData(); char m_szFirstName[30];
char m_szLastName[30];
int nAge;
};CEmployee::FetchEmployeeData()
{
_ConnectionPtr pCon();
_RecordsetPtr pRs();
FieldPtr pfldFirstName, pfldLastName, pfldAge;
_variant_t vFirstName, vLastName, vAge;pCon.CreateInstance(__uuidof(Connection));
pCon->Open(“pubs”, “sa”, “”);pRs.CreateInstance(__uuidof(Recordset));
pRs->Open(“select FirstName, LastName, Age from Employees”, pCon,
adOpenForwardOnly, adLockReadOnly, adCmdUnknown);pfldFirstName = pRs->Fields->GetItem(0);
pfldLastName = pRs->Fields->GetItem(1);
pfldAge = pRs->Fields->GetItem(2);while (VARIANT_FALSE == pRs->EndOfFile)
{
vFirstName.Clear();
vLastName.Clear();
vAge.Clear(); vFirstName = pfldFirstName->Value;
WideCharToMultiByte(CP_ACP, 0, vFirstName.bstrVal, -1,
m_szFirstName, sizeof(m_szFirstName), NULL, NULL); vLastName = pfldLastName->Value;
WideCharToMultiByte(CP_ACP, 0, vLastName.bstrVal, -1,
m_szLastName, sizeof(m_szLastName), NULL, NULL); nAge = vAge.iVal; pRs->MoveNext();
}
}