【摘要】本文介绍如何利用ArcCatalog和C#代码连接Oracle ArcSDE空间数据库。
进行ArcSDE的管理和开发,首先必须知道如何连接到空间数据库。连接到ArcSDE实际上主要包括两种形式:三层模式和二层模式。三层模式即客户端直接连接到ArcSDE服务,然后由ArcSDE服务处理与空间数据库的连接。二层模式又叫直接连接模式(direct connection),即客户端直接连接到空间数据库。二层模式具备更好的灵活性,但是客户端负载增加;三层模式下客户端几乎无负载,但是需要在服务器上配置和管理ArcSDE服务。
下列情况下可以考虑使用二层连接方式:
- 懒得去管理ArcSDE服务
- 需要较少服务器的负载
- 连接到ArcSDE个人数据库时
下列情况下可以考虑使用三层连接模式:
- 客户端机器资源不够
- 客户端与服务器发行版本不一致
- 懒得为每个客户端配置服务器连接
以下说明如何通过ArcCatalog以二层直接连接的方式连接ArcSDE数据库
1、点击“开始/ArcGIS/ArcCatalog”菜单,启动ArcCatalog软件。在左侧导航树中找到“数据库连接”菜单并选择。选择该菜单后,右侧详细窗口将显示已有连接(如图2.1所示)。
图2.1 配置数据库连接(一)
2、双击“添加 空间数据库连接”,系统显示数据库配置对话框(如图2.2所示)。依次填入服务、用户名和密码,并点击“确定”按钮。
图2.2 配置数据库连接(二)
注意,如果使用Oracle10g,那么服务必须填写“sde:oracle10g”;如果使用Oracle9i,那么服务必须填写“sde:oracle9i”。用户名即数据库中配置的用户名称。口令使用“password@db_net_service_name”。例如:
用户名: user1
密码: password1@dbname1
默认连接到的版本是“SDE.DEFAULT”,如果需要连接其他版本,可以选择更改来选择版本名称。也可以使用“测试连接”按钮来测试配置的正确性。
3、修改连接名称,并按下回车键(如图2.3所示)。以后双击该连接名称既可以连接到该数据库。如果在该连接上点击鼠标右键,可以看到“属性”菜单,可以看到其中的名称形如:
C:/Documents and Settings/hexy/Application Data/ESRI/ArcCatalog/test1@dbname.sde
实际上,整个连接的所有配置信息已经存储到该sde文件中,程序代码也可以直接使用该文件来连接数据库。
图2.3 配置数据库连接(三)
以下说明如何通过程序代码(C# 语言)来连接到空间数据库。可以看到,程序代码设置的信息跟使用ArcCatalog配置数据库连接是类似的,也需要设置用户名(user1)、密码(password1)、数据库名称(dbname1)、服务器地址(localhost)、实例名(sde:oracle10g)、版本号(SDE.DEFAULT)。
string userName = "user1", password = "password1", userDbName = "dbname1";
ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();
propertySet.SetProperty("SERVER", "LOCALHOST");
propertySet.SetProperty("INSTANCE", "sde:oracle10g");
propertySet.SetProperty("USER", userName);
string pwd = password + "@" + userDbName;
propertySet.SetProperty("PASSWORD", pwd);
propertySet.SetProperty("VERSION", "SDE.DEFAULT");
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory factory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
IWorkspace ws = factory.Open(propertySet, 0);