SuperMap iObjects C++之数据源管理

      工作空间中打开的数据源都是在数据源集合下进行管理,数据源(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);
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值