连接SDE数据库代码


By  3s4d 发表于 2007-6-5 16:39:00 

0

什么是SDE数据库?这个问题要详细地讲解将花费大量的时间,但我可以告诉你SDE数据数据库可以是任何关系数据库。ESRI公司为了使空间数据能保存在关系数据库中,并且能很好的查询相关的空间属性而开发的一个中间件,使用SDE能很好的将空间数据保存在关系数据库中。如Orcale SQL Server 等。SDE具体细节的了解请查找相关的资料,这里只介绍怎么连接SDE数据库。SDE数据库的联机分为直接连接和通过SDE连接。当服务器的性能比较好的时候可以采用SDE连接,否则采用直接连接,这样可以减轻服务器的任务。建议采用直接连接,其实,SDE连接方式和直接连接的方式只是一个属性参数设置的问题。跟个人数据库采用属性连接的方式一样,先定义一个属性对象,然后设置属性参数,接着定义一个工作空间并用SdeWorkspaceFactoryClass()实例化它,接着加在加载图层,至于加载图层的代码,与加载个人数据库中图层的方法一样,其实不只加载这两种数据类型,加载其他类型的数据时也是采用相同的方法加载图层,只是工作空间采用不同的实例而已,下边为完整的示例代码:

public void AddSDELayer(bool ChkSdeLinkModle)

{

     //定义一个属性

     IPropertySet  Propset = new PropertySetClass();  

     if (ChkSdeLinkModle==true) // 采用SDE连接

     {  

         //设置数据库服务器名

         Propset.SetProperty ("SERVER", "zhpzh");

         //设置SDE的端口,这是安装时指定的,默认安装时"port:5151"

         Propset.SetProperty ("INSTANCE", "port:5151");

         //SDE的用户名

         Propset.SetProperty ("USER", "sa");

         //密码

         Propset.SetProperty ("PASSWORD", "sa");

         //设置数据库的名字,只有SQL Server  Informix 数据库才需要设置

         Propset.SetProperty ("DATABASE", "sde");

         //SDE的版本,在这为默认版本

         Propset.SetProperty ("VERSION", "SDE.DEFAULT");

     }

     else // 直接连接

     {

        //设置数据库服务器名,如果是本机可以用"sde:sqlserver:."

        Propset.SetProperty ("INSTANCE", "sde:sqlserver:zhpzh");
     }
      IWorkSpaceFactory pWkSpFac = new SdeWorkspaceFactory();

            IWorkSpace pWkSpace = pWkSpFac.open(Propset,0);

  
/////一下为vb代码
    Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace As IFeatureWorkspace
Dim pPropSet As IPropertySet
Dim pClass As IFeatureClass
Dim pLayer As IFeatureLayer
Dim pMxDoc As IMxDocument

 Set pWorkspaceFactory = New SdeWorkspaceFactory
Set pPropSet = New PropertySet

 With pPropSet '设置ArcSDE连接属性
.SetProperty "SERVER", Server
.SetProperty "INSTANCE", Instance
.SetProperty "USER", User
.SetProperty "PASSWORD", Password
.SetProperty "VERSION", version '可选,缺省为SDE.DEFAULT版本
End With

 Set pWorkspace = pWorkspaceFactory.Open(pPropSet, 0)
Set pClass = pWorkspace.OpenFeatureClass(featureClass)
Set pLayer = New FeatureLayer
Set pLayer.featureClass = pClass
pLayer.Name = pClass.AliasName

Set pMxDoc = ThisDocument
pMxDoc.AddLayer pLayer
pMxDoc.ActiveView.PartialRefresh esriViewGeography, pLayer, Noting

原文地址:https://www.cnblogs.com/zhangjun1130/p/1396444.html