做ArcEngine开发的系统,都会涉及连接空间数据库,这里记录一下链接方法和过程。
直接上代码:
// 用连接属性创建 propertySet
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", "cuillin");
propertySet.SetProperty("INSTANCE", "esri_sde");
propertySet.SetProperty("USER", "scott");
propertySet.SetProperty("PASSWORD", "tiger");
propertySet.SetProperty("VERSION", "SDE.DEFAULT");
propertySet.SetProperty("AUTHENTICATION_MODE", "DBMS");
// 创建 SDE 工作空间工厂,并打开工作空间
//Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
//var workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactory();
IWorkspace workspace = workspaceFactory.Open(propertySet, 0);
在示例中,远程的数据库工作空间链接,如通过SDE,在链接时需要设置 USER, PASSWORD, DATABASE, SERVER, INSTANCE, VERSION, HISTORICAL_NAME, HISTORICAL_TIMESTAMP, 和 AUTHENTICATION_MODE等属性。当然有些属性可以省略。
下面列出这些数据的简单描述
"SERVER" – 需要连接到的SDE服务名称
"INSTANCE" – 需要连接到的实例
"DATABASE" – 连接的数据库名
"USER" – 连接用户名
"PASSWORD" – 链接用户的密码
"AUTHENTICATION_MODE" – 连接凭据身份验证模式。可设置为"OSA"和"DBMS"
"VERSION" – 连接到事务版本,可设置一个字符串描述事务版本的名称
"HISTORICAL_NAME" – 连接到历史版本. 设置一个字符串类型的值,该值是一个历史版本的名字标示.
"HISTORICAL_TIMESTAMP" – 建立一个历史事件点的版本连接,参数是表示历史时间戳的日期时间.
备注:
1. “DATABASE”参数是可选的,但是在实际情况中如果有多个库(比如SQL Server)就要求设置该参数。
2. 假如“AUTHENTICATION_MODE”参数设置成“OSA”,则“USER”和“PASSWORD”参数则不需要设置。“OSA”表示系统身份认证,用户操作系统凭证建立数据库链接。
3. 工作空间链接只能连接到一个版本,属性参数只有三种(“VERSION”、“HISTORICAL_NAME”,“HISTORICAL_TIMESTAMP”)可以选择。