博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperMap iObjects C++之数据源管理
阅读量:4163 次
发布时间:2019-05-26

本文共 2959 字,大约阅读时间需要 9 分钟。

      工作空间中打开的数据源都是在数据源集合下进行管理,数据源(UGDatasource)是存储空间数据的场所。所有的空间数据都是存储于数据源而不是工作空间,任何对空间数据的操作都需要打开或获取数据源,用户可以按照数据的用途,将不同的空间数据保存于数据源中,对这些数据统一进行管理和操作。 对不同类型的数据源,需要不同的空间数据引擎来存储和管理。

      一个工作空间可以打开多个数据源,不同的数据源通过不同的别名进行标识,一个工作空间的所有数据源通过一个数据源集合(UGDatasources)进行管理。打开数据源时首先需要明确打开数据源需要的空间数据库引擎类型。

创建数据源关键步骤:

1、新建一个工作空间,通过工作空间管理要打开的数据源。
2、通过UGDsConnection对象构建要打开的数据源的连接信息:
<1>指定连接信息数据库类型,要打开数据源的空间数据库引擎类型:UDB、Oracle、SQL等。
<2>指定连接信息服务名,如果是文件型数据源,则服务名为数据源文件的路径;如果是数据库型数据源,连接信息为数据库连接信息以及用户名密码。。
5、UGDataSourceManager::CreateDataSource接口获得一个指定空间数据库引擎类型数据源对象,通过该对象的GetConnectionInfo接口,将上述设置的数据源连接信息传入。
6、通过上述UGDataSource对象的Create接口,创建数据源。
7、通过UGWorkpace->UGDataSources.Insert接口,将打开的数据源添加到当前工作空间中的数据源集合中管理。通过工作空间可以保存用户的工作成果。
      数据源打开后,可以继续操作其中的数据集等。

      下面用简单的示例详细介绍一下如何创建文件型、数据库型。

首先:创建数据源前必须有一个工作空间。
SampleRun::SampleRun(void)
{
//创建工作空间
m_pWorkspace = new UGWorkspace();
}

1.创建UDB文件型数据源

void SampleRun::OpenDataSouseUDB()
{
//清空工作空间中已经存在的数据源
m_pWorkspace->m_DataSources.RemoveAll();
//设置数据源连接信息
UGDsConnection *pCon = new UGDsConnection();
//数据源类型
pCon->m_nType = UGC::UDB;
//udb地址
pCon->m_strServer = _U(“F:\TestData\World.udb”);

//创建数据源UGDataSource* pDataSource = UGDataSourceManager::CreateDataSource(UGC::UDB);//设置数据源连接信息pDataSource->GetConnectionInfo() = *pCon;//打开数据源pDataSource->Create();//向工作空间中插入一个使用“test”作为别名的数据源m_pWorkspace->m_DataSources.Insert(_U("test"),pDataSource);//释放对象delete pDataSource;pDataSource = NULL;

}

2.创建oracle数据源

注意:对接oracle类型的数据库数据源,需要注意的是,需要在本机安装对应位数的oracle客户端,比如,程序引用的是32位的类库,那就需要安装32位的oracle客户端,如果使用的是64位的类库,那就需要安装64位的oracle客户端。
void SampleRun::OpenDataSouseOrcale()
{
//清空工作空间中已经存在的数据源
m_pWorkspace->m_DataSources.RemoveAll();
//设置数据源连接信息
UGDsConnection *pCon = new UGDsConnection();
//数据源类型
pCon->m_nType = UGC::Oracle;
//设置数据库名称
pCon->m_strDatabase = _U("");
//设置用户名
pCon->m_strUser = _U("");
//设置密码
pCon->m_strPassword = _U("");

//创建数据源//打开 Oracle 数据源时,那么用户必须安装oracle客户端,建立数据库连接还要有对应的空间数据库引擎(SDX+ for oracle)UGDataSource* pDataSource = UGDataSourceManager::CreateDataSource(UGC::Oracle);//设置数据源连接信息pDataSource->GetConnectionInfo() = *pCon;//打开数据源pDataSource->Create();//向工作空间中添加一个使用“test”作为别名的数据源m_pWorkspace->m_DataSources.Insert(_U("test"),pDataSource);//释放对象delete pCon;pCon = NULL;

}

3.打开数据源关键步骤:

打开数据源和创建数据源不一样的地方就是创建用的是Create,而打开用的是UGDataSource对象的Open接口,来打开数据源。

下面通过简单的一个示例来介绍如何打开本地已经存在的udb数据源。Oracle同理,就不再单独写示例了。

void SampleRun::OpenDataSouseUDB()
{
//清空工作空间中已经存在的数据源
m_pWorkspace->m_DataSources.RemoveAll();
//设置数据源连接信息
UGDsConnection *pCon = new UGDsConnection();
//数据源类型
pCon->m_nType = UGC::UDB;
//udb地址
pCon->m_strServer = _U(“F:\TestData\World.udb”);

//创建数据源UGDataSource* pDataSource = UGDataSourceManager::CreateDataSource(UGC::UDB);//设置数据源连接信息pDataSource->GetConnectionInfo() = *pCon;//打开数据源pDataSource->Open();//向工作空间中插入一个使用“test”作为别名的数据源m_pWorkspace->m_DataSources.Insert(_U("test"),pDataSource);//释放对象delete pDataSource;pDataSource = NULL;

}

4.关闭数据源

关闭数据源操作将从工作空间的数据源集合中移除被关闭的数据源。
{
//移除数据源;
m_pWorkspace->m_DataSources.RemoveAt(0);
}

转载地址:http://wspxi.baihongyu.com/

你可能感兴趣的文章
javascript中常用到的方法和事件
查看>>
电阻电容的使用
查看>>
万用表检测常用元器件的方法
查看>>
常用电子元件基础知识(图解)
查看>>
STM32开发板入门教程(十三) - SPI模式读写SD卡
查看>>
(2)stm32开发之使用Keil MDK以及标准外设库创建STM32工程
查看>>
(1)stm32开发之标准库的介绍
查看>>
(3)stm32开发之串口的调试
查看>>
verilog的学习
查看>>
史上最全的stm32资料库4---常见问题及编译工具篇
查看>>
STM32的USART发送数据时如何使用TXE和TC标志
查看>>
职业规划的重要性
查看>>
指针的初始化
查看>>
C语言函数不能返回局部变量的地址
查看>>
如何编写有多个返回值的C语言函数
查看>>
MIPS DMIPS MFLOPS名词解释
查看>>
protel dxp PCB使用技巧(摘)
查看>>
什么是硬件设计?
查看>>
一位强人写的电子工程师起码技术要求
查看>>
晶振工作原理
查看>>