原来使用Arcgis9.3的版本,现在升级到了10.1遇到不少问题,原来初始化工作空间的代码无法正常运行了,修改后的代码如下:
static void Test() { IPropertySet sdeProperties = new PropertySetClass(); sdeProperties.SetProperty("INSTANCE", "sde:oracle10g:T194"); sdeProperties.SetProperty("DATABASE", "sde"); sdeProperties.SetProperty("USER", "sde"); sdeProperties.SetProperty("PASSWORD", "sde"); sdeProperties.SetProperty("VERSION", "sde.DEFAULT"); IWorkspace sdeWorkspace = CreateSdeWorkspace(sdeProperties); } /// <summary> /// Retrieves an SDE workspace using the specified property set. /// </summary> /// <param name="propertySet">The connection parameters.</param> /// <returns>An IWorkspace reference to an SDE workspace.</returns> public static IWorkspace CreateSdeWorkspace(IPropertySet propertySet) { // Create the workspace factory and connect to the workspace. Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory"); IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspace workspace = workspaceFactory.Open(propertySet, 0); return workspace; }
需要注意的地方:
- 原来9.3连接实例(INSTANCE)的值为:SDE:ORACLE10G,在10.1中的值改变了,而且必须要小写
- 在10.1中参数值:sde:oracle10g:T194,含义:sde:oracle10g为指定应数据和库版,可以查看一下oracle版本,语句:select * from v$instance;T194:对应oracle客户端在Net Manager中的“服务命名”
- 这里调用的其实是Desktop中的组件,但Desktop是运行在32位环境的,所以服务器上也必须安装Oracle 32位客户端,顺序是这样的:先安装32位客户端,再安装64位客户端,也可以直接修改环境变量