虽然Arcgis10.0以后版本中提供了直连sde数据库的入口,但是在实际操作中会遇到以下问题( 包括但不限于):
- 电脑环境32位,64位问题
- SDE数据库版本问题,桌面端arcmap软件10.0以上连接arcsde9.2或9.0,兼容问题
- 数据库实例书写规则
- 等其他
附上直连方式参数设置代码
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", server);
propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("USER", user);
propertySet.SetProperty("PASSWORD", password);
propertySet.SetProperty("VERSION", version);
IWorkspaceFactory2 workspaceFactory = new SdeWorkspaceFactoryClass();
IWorkspace workspace = workspaceFactory.Open(propertySet, 0);
直连无法成功,退而求其次,从侧面建立连接(创建.sde文件,然后通过设置参数建立连接)
String path = "..."; String sdeName = "new.sde"; String sdePath = path+"\\"+sdeName; File file = new File(sdePath); if(file.exists()){ file.delete(); }
IPropertySet propertySet = new PropertySet(); propertySet.SetProperty("SERVER", server); propertySet.SetProperty("INSTANCE", instance); propertySet.SetProperty("USER", user); propertySet.SetProperty("PASSWORD", password);
propertySet.SetProperty("VERSION", "SDE.DEFAULT");propertySet.SetProperty("DATABASE", "orcl");
IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass();propertySet.SetProperty("AUTHENTICATION", "DBMS");
workspaceFactory.create(path,sdeName,propertySet ,0); IWorkspace workspace = workspaceFactory.openFromFile(sdeFile,0);
propertySet.SetProperty("PASSWORD", password);