打开工作空间后,再打开多个数据源失败

0 投票
使用c++ iobjects,当打开某个工作空间后,再使用这个工作空间打开某个数据源成功,但是当打开第二个时就会失败,与数据无关,只要是第二个就失败,使用代码如下:

UGString strPathfile;
strPathfile.FromStd(Convert::toString(strFileFullPath).c_str());
UGC::UGDsConnection* dsConn =new UGC::UGDsConnection();

dsConn->m_bReadOnly = FALSE;
dsConn->m_nType = UGC::UDB;//数据库类型
dsConn->m_strServer = strPathfile;//.udb 文件全路径

pDatasource = m_pWorkSpace->OpenDataSource(*dsConn);

当strPathfile表示某个数据源A时,打开成功

当strPathfile表示另一个数据源B时,打开失败

也就是第二次执行这段代码就会失败

希望各路大神指点一下,万分感谢
4月 9, 2018 分类:  436次浏览 | 用户: g明伟 初出茅庐 (30 分)

2 个回答

0 投票
 
已采纳
打开的时候需要设置dsConn->m_strAlias; 默认都是一样的,第二次打开检测到已经存在这个名称的数据源,所以打开失败。数据源别名不能一样。
4月 10, 2018 用户: 程逸诗 名扬四海 (1,242 分)
采纳于 4月 16, 2018 用户:g明伟
0 投票
补充:观察到打开失败状态时,m_pWorkSpace->m_DataSources.IsModified() 返回TRUE,是否与此有关?
4月 10, 2018 用户: g明伟 初出茅庐 (30 分)
...