虽然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("DATABASE", "orcl");
propertySet.SetProperty("VERSION", "SDE.DEFAULT");
propertySet.SetProperty("AUTHENTICATION", "DBMS");
IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass();
workspaceFactory.create(path,sdeName,propertySet ,0);
IWorkspace workspace = workspaceFactory.openFromFile(sdeFile,0);
propertySet.SetProperty("PASSWORD", password);