ADO访问,假设第一列字段名为"id"按字段名访问,VB的格式:   rs("id")     VC中格式为:pRst->GetCollect("id")按字段序访问,VB的格式为: rs(0).Value  VC中是什么?

解决方案 »

  1.   


    1、你可以通过以下方法获得总的列数long nCount = pRs->GetFields()->GetCount();2、通过索引获取数据_variant_t varIndex;
    varIndex.ChangeType(VT_I4);
    varIndex.intVal = 0;var = pRs->GetCollect(varIndex);注意 GetCollect 函数的参数,是 _variant_t 类型的,所以直接写 0 不行。不知道还有没有其它更简单的方法?
      

  2.   

    VC中格式为:pRst->GetCollect(0L);
      

  3.   

    原因是这样的:
    ADO是一种叫做COM的东西,COM的东西就是用于跨平台,所以在VC下用ADO和在ASP中用ADO是一样的!既然跨平台,那么有些数据类型就不能用,比如int,它是C语言的一个东西,VB等其它好多语言都不支持int数据类型!所以在ADO中,也没有int这种数据类型,而在C语言中,一个常数如果没有指定类型,默认为int型,而ADO并不支持int型,所以编译通不过!你可能会说,GetCollect需要一个_variant_t 型参数,与ADO什么关系呢?其实_variant_t只是一个VARIANT的包装类,VARIANT这是个COM的东西,所以在它的字典里,仍然没有int这个数据类型。所以会出现从int到_variant_t无法转换的错误!
      

  4.   

    明白,了解,用VC做数据库应用总感觉没VB方便,连MSDN里的ADO资料大都是给VB的。
    数据库里的类型与VB的类型很匹配,而VC还要转。