ArcGIS Engine 添加SDE数据库

public void AddSDELayer(bool ChkSdeLinkModle)
{
  //定义一个属性
  IPropertySet propset = new PropertySetClass();
  if (ChkSdeLinkModle == true) // 采用SDE连接
  {
      //设置数据库服务器名
      propset.SetProperty("SERVER", "192.168.188.128");
      //设置SDE的端口,这是安装时指定的,默认安装时"port:5151"
      propset.SetProperty("INSTANCE", "port:5151");
      //SDE的用户名
      propset.SetProperty("USER", "sa");
      //密码
      propset.SetProperty("PASSWORD", "123456");
      //设置数据库的名字,只有SQL Server  Informix 数据库才需要设置
      propset.SetProperty("DATABASE", "esri_sde");
      //SDE的版本,在这为默认版本
      propset.SetProperty("VERSION", "SDE.DEFAULT");
  }
  else // 直接连接 
  {
      //设置数据库服务器名,如果是本机可以用"sde:sqlserver:."
      propset.SetProperty("INSTANCE", "sde:sqlserver:192.168.188.128");
      //SDE的用户名
      propset.SetProperty("USER", "sa");
      //密码
      propset.SetProperty("PASSWORD", "123456");
      //设置数据库的名字,只有SQL Server  Informix 数据库才需要设置            
      propset.SetProperty("DATABASE", "esri_sde");
      //SDE的版本,在这为默认版本
      propset.SetProperty("VERSION", "SDE.DEFAULT");
   }
   //定义一个工作空间,并实力化为SDE的工作空间
   IWorkspaceFactory Fact = new SdeWorkspaceFactoryClass();
   //打开SDE工作空间,并转化为地物工作空间
   IFeatureWorkspace Workspace = (IFeatureWorkspace)Fact.Open(propset, 0);
   /*定义一个地物类,并打开SDE中的管点地物类,写的时候一定要写全.如SDE中有一个管点层,你不能写成IFeatureClass Fcls = Workspace.OpenFeatureClass ("管点");这样,一定要写成下边的样子.*/
   IFeatureClass Fcls = Workspace.OpenFeatureClass("esri_sde.DBO.道路");
   IFeatureLayer Fly = new FeatureLayerClass();
   Fly.FeatureClass = Fcls;
   axMapControl1.Map.AddLayer(Fly);
   axMapControl1.ActiveView.Refresh();
}

posted @ 2012-09-07 08:53  oftenlin  阅读(3020)  评论(0编辑  收藏  举报