WINCE下使用安全数组SAFEARRAY和VARIANT

wbq315   2009-5-5 10:16 楼主
我现在在WINCE下OLE DB+SQL3.5开发
现在需要实现一个查询数据库的全部数据.
在使用中出现了点问题
数据库类型字符串,时间,整型

出现的问题:读取多条数据时候,第一条数据显示是正常,第二条数据以后的数据字符串就会变空了,时间跟整型是正常的,问题出现在SafeArrayPutElement
变量体已经获取数据库的数据已证实,当运行完SafeArrayPutElement 变量体的数据变空了.第一条数据的时候不会出现这种现象




部分代码
SAFEARRAYBOUND                rgsabound[2];
SAFEARRAY*                        pArray;
VARIANT                                vValue;
long                                location[2]                        ={0, 0};
if (Rows > 1)
        {       
                rgsabound[0].lLbound = 0;
                rgsabound[0].cElements = ulNumCols;
                rgsabound[1].lLbound = 0;
                rgsabound[1].cElements = Rows;
                pArray = SafeArrayCreate(VT_VARIANT, 2, rgsabound);
        }
        else if(Rows == 1)
        {
                rgsabound[0].lLbound = 0;
                rgsabound[0].cElements = ulNumCols;
                pArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
        }
for()
{
    for()
    {
       location[0] = nCol;
       location[1] = Rows;
       SafeArrayPutElement(pArray, location, &vValue);
    }
}
pvar.vt = VT_ARRAY;
        pvar.parray = pArray;
以前是写进安全数组
在外部读的时候是
VARIANT var, result;
VariantInit(&result);
for ()
        {
                for ()
                {
       
                        location[0] = cols;
                        location[1] = rows;
                        result.vt = ****;
                        SafeArrayGetElement(var.parray, location, &result);                               
                }
        }
VariantClear(&result);

回复评论 (1)

我自己解决了哈.谢谢了.爽.
点赞  2009-5-5 10:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复