当我使用ado访问数据库中一个binary(8)类型的自定义数据时,假设该数据所在的字段名为data_id,
我的代码如下
_vairant_t v_dataid;
BYTE dateid[8];
.......
v_dataid = pRecordSet->GetCollect("date_id");
但此时,我好像不能直接使用v_dateid,
我怎么才能把它转化成程序所能识别的数据类型呢?
比如把它转化后赋给dataid[8]
我的代码如下
_vairant_t v_dataid;
BYTE dateid[8];
.......
v_dataid = pRecordSet->GetCollect("date_id");
但此时,我好像不能直接使用v_dateid,
我怎么才能把它转化成程序所能识别的数据类型呢?
比如把它转化后赋给dataid[8]
解决方案 »
- /**********VC6.0为什么会有那么多bug**********/
- 如何得到一个EXE(或Dll)隐式依赖的Dll名称(含路径)列表?
- 移动窗体
- vc++2005中的richTextBox怎么用啊!
- 怎么编写选中线
- dll开发中的一个小问题 请帮忙!
- 【对于vs2003的stl的list, 2个线程,1个线程用Iterator读list元素,1个线程用Iterator删除元素(如erase(it)),不lock可以吗?】
- where can I download BoundsCheck (free)?
- 关于UDP的问题
- 最简单的问题。。。快来。。
- 怎么从MainFrame类向View发送自定义消息
- 为啥CTestDlg:: OnKeyDown始终触发不了啊?
其赋值可以使用强制类型转换,
其构造函数会自动处理这些数据类型。
例如:
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;
v_dataid.bval=pRecordSet->GetCollect("date_id");
这样应该可以吧!
BYTE dateid[8];
------------------------->
Change from _variant_t to Byte array:v_dataid.ChangeType(VT_BYREF|VT_UI1,NULL);
memcpy(dateid,v_dataid.pbVal,sizeof(BYTE)*8);
{
v_dataid.ChangeType(VT_BYREF|VT_UI1,NULL);
memcpy(dateid,v_dataid.pbVal,sizeof(BYTE)*8);
}
catch(_com_error ce)
{
const char* msg = ce.ErrorMessage();
}
在运行到.ChangeType那一句就会异常抛出,
我在catch中接收到改异常,发现错误提示msg= "未知界面。"