首页 / 浏览问题 / 组件GIS / 问题详情
使用开发包里的OGDC相关接口 连接 postgresql
5EXP 2022年09月23日

我下了您网站上的开发包做一些技术验证测试

supermap-iobjectscpp-11.0.0-21113-95737-win-all

我的数据库是postgresql, 数据为yukon. 我想通过OGDC访问数据库. 很遗憾, 例子里只有访问本地文件的. 只能根据注释写了连接网络数据库的代码.

片段如下:

if (!mgr->LoadProvider(_T("SuEngineYukond.sdx")))
{
	throw exception("加载OGCD驱动失败...");
}

auto_ptr<OgdcDataSource> pSouce(mgr->CreateOgdcDataSource(OGDC::oeNone)); // OgdcEngineType里没有postgresql的类型怎么办?

if (pSouce.get() == NULL)
{
	throw exception("创建数据源失败");
}

wcout << _T("初始化数据源成功...") << endl;

pSouce->m_nEngineClass = 1; // 1 - 网络数据库
pSouce->m_connection.m_nType = -1;
pSouce->m_connection.m_strServer = _T("192.168.0.100");
pSouce->m_connection.m_nPort = 5432;
pSouce->m_connection.m_strUser = _T("test");
pSouce->m_connection.m_strPassword = _T("testpsw");
pSouce->m_connection.m_strDatabase = _T("test");
pSouce->m_connection.m_strDriver = _T("org.postgresql.Driver");
pSouce->m_connection.m_bEncrypt = true;

if (!((OgdcDataSource*)pSouce.get())->Open())
{
	throw exception("打开数据库失败!"); // 总是失败
}

还请管理员帮问问技术人员, 能否给点提示或者例子, 谢谢!

1个回答

您好,在 iObjects C++ 组件库中提供了 UGEngineType::Yukon 枚举用于指定连接数据库的引擎为 Yukon,建议您连接 Yukon 数据库的时候将 m_connection.m_nEncryType 属性指定为 UGEngineType::Yukon,而不是通过 PostgreSQL 引擎方式进行连接。

希望可以帮到您。
2,253EXP 2022年09月23日
感谢答复, 已经解决问题
...