注册

使用 dpi_get_data API获取记录集异常

L. J 2021/08/13 1065 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8 WIN64
【操作系统】:WIN 2012
【CPU】: I7 第8代
【问题描述】*:
我在CENTIOS 环境写一个demo先调用dpi_get_data返回-1
f(!DSQL_SUCCEEDED(rt = dpi_number_columns(*m_hRes,&nColums)))
{
return rt;
}

for (int ColumIndex = 1; ColumIndex <= nColums; ++ColumIndex)
{
sdbyte szColumsName[64+1] = {0};
//列名长
sdint2 nColumLen = 0;
//列字段类型
sdint2 nSqltype = -1;

    //列内容大小
    ulength col_sz  = 0;

    //指向返回列的小数位数的缓冲区的指针
    sdint2 dec_digits = 0;

    //指向返回列是否允许为空的缓冲区的指针
    sdint2 nullable = 0;
   
    if(!DSQL_SUCCEEDED(rt = dpi_desc_column(*m_hRes,ColumIndex,szColumsName,sizeof(szColumsName)-1,
    &nColumLen,&nSqltype,&col_sz,&dec_digits,&nullable)))
    {
         return rt;
    }

    sdbyte szColumsValue[64+1] = {0};
    sdint2 chr_attr_len = 0;
    slength num_attr = 0;
   if(!DSQL_SUCCEEDED(rt = dpi_get_data(
    *m_hRes,
    ColumIndex,
    nSqltype,
    szColumsValue,
    64,
    &num_attr
    )))
    {

        return rt; //此处返回值为-1,上午测试成功过,下午测试是返回了-1 ,使用WINDOWS 服务管理启动DM实例没起作用
    }

    to_upper((char*)const_cast<signed char*>(szColumsName));
    DMSQL_SQLFIELD_NSAMESPACE::CSQLField field(std::string((char*)const_cast<signed char*>(szColumsName),nColumLen),
     ColumIndex,nSqltype,col_sz,dec_digits,nullable);
    m_SQLFIELD.insert(std::make_pair(field.GetName(), field));
}

return DSQL_SUCCESS;

}

请看代码注释!!!

回答 0
暂无回答
扫一扫
联系客服