首页 / 浏览问题 / 组件GIS / 问题详情
iobjects-cpp 再次打开中断
7EXP 2021年09月26日

       使用产品: iobjects-cpp 10

       操作系统:win 7

       数据类型:文件型

问题描述:

UGDataSource* pDataSource =  m_pWorkspace->GetDataSource(_U("China400"));
            

    //GetDataset()方法返回的是一个UGDataset类型,该类型为素有数据集类型的基类,             

    //由于我已知我要得到的数据集是矢量数据,所以直接强转为UGDatasetVector 

             

    UGDatasetVector* pDvNode =  (UGDatasetVector*)(pDataSource->GetDataset(_U("China_CitDistrict_P")));

      

    //新建查询信息 

            

    UGQueryDef qdf;            

    qdf.m_nType = UGQueryDef::General;//查询类型:一般的属性条件查询             

    qdf.m_nOptions = UGQueryDef::Both;//查询选项:几何对象(Geometry)和属性(Attribute)都查询             

    qdf.m_nMode = UGQueryDef::GeneralQuery;//查询模式:一般查询(非模糊查询)            

    qdf.m_nCursorType = UGQueryDef::OpenStatic;//游标类型:静态游标 

        

    //查询             

    //查询后,满足条件的要素会存到一个UGRecordset链表中,查询的返回值为该链表头的指针 

            

    UGRecordset* pRsNewObjs = pDvNode->Query(qdf);      

       vs+qt 联合开发时,界面用了supermap  数据查询功能,第一次打开正常,再次打开时 UGDatasetVector 显示读不出数据进行中断,关闭释放都没得办法。数据源可以打开,但是进行数据查询时就会读不到。

1个回答

操作完数据后,在不需要使用UGRecordset的时候需要对UGRecordset进行释放,在进行query之前,执行一下UGDatasetvector.Open()方法
4,620EXP 2021年09月27日
UGRecordset 释放是用ReleaseRecordset 函数吗?
再次打开的时候UGDatasetVector 的空间就指向0x0000000了那里就已经读不到数据了
还有怎么去释放 UGMap QMapControl UGWorkspace 的空间呢?
c++里面释放对象内存是 delete 对象

如果再次打开就没有数据了,检查一下是否是删除了数据或者是干嘛了,这个不好说是啥原因。可以简单些个测试,将其他代码都去掉,只是重复获取数据
用的是qt 界面 使用的时候会有数据应该是数据被占用了,不知道怎么释放 pDvNode 去访问数据源就是找不到
...