zoukankan      html  css  js  c++  java
  • 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();
    }

     -------------------------------------------------------------------------------------------------------------------------------

    public static void test()  

           {  

    try  

               {  

                   IWorkspace pWS = GetSDEWorkspace("localhost", "localhost/orcl", "sde", "sde", "sde.DEFAULT");  

                   IDatabaseConnectionInfo4 pDCInfo = pWS as IDatabaseConnectionInfo4;  

                   IEnumUserInfo pEnumUsers = pDCInfo.ConnectedUsers;  

                   IUserInfo pUser = pEnumUsers.Next();  

    int pSessionID;//获得连接用户的sessionID   

    string sUserName = "";//连接用户名称  

    string sClientName = "";//连接用户的机器名  

    string sConnetionTime = "";//连接用户的开始连接时间  

    while (pUser != null)  

                   {  

    if (!pUser.IsOwnConnection)  

                       {  

                           pSessionID = pUser.SessionID;  

                           sUserName = pUser.Name;  

                           sClientName = pUser.ClientName;  

                           sConnetionTime = pUser.ConnectionTime.ToString();  

    //通过用户的sessionID断开用户连接  

                           pDCInfo.DisconnectUser(pSessionID);  

                       }  

                       pUser = pEnumUsers.Next();  

                   }  

               }  

    catch (Exception e)  

               { }  

           }  

    public static IWorkspace GetSDEWorkspace(string sServerName, string sInstancePort, string sUserName, string sPassword, string sVersionName)  

           {  

               IPropertySet2 set = new PropertySetClass();  

    set.SetProperty("Server", "");  

    set.SetProperty("DBCLIENT", "Oracle");  

    set.SetProperty("Instance", "sde:oracle11g:" + sInstancePort);  

    set.SetProperty("User", sUserName);  

    set.SetProperty("password", sPassword);  

    set.SetProperty("version", sVersionName);  

               IWorkspaceFactory2 class2 = new SdeWorkspaceFactoryClass();  

    try  

               {  

    return class2.Open(set, 0);  

               }  

    catch (Exception ex)  

               {  

    return null;  

               }  

           }

    ---------------------------------------------------------------------------------------------------------

    ArcGISEngine10.1

    访问

    ArcSDE 

    直连式

     

    IWorkspace

    pWkspace = 

    null

                ESRI.ArcGIS.Geodatabase.

    IWorkspaceFactory2

    workspaceFactory = 

    null

    ESRI.ArcGIS.esriSystem.

    IPropertySet

    pPropertySet = 

    new

    ESRI.ArcGIS.esriSystem.

    PropertySetClass

    (); 

    pPropertySet.SetProperty(

    "SERVER"

    "lingy"

    ); 

    pPropertySet.SetProperty(

    "INSTANCE"

    "sde:oracle11g:orcl"

    ); 

    pPropertySet.SetProperty(

    "AUTHENTICATION_MODE"

    "DBMS"

    ); 

    pPropertySet.SetProperty(

    "USER"

    "sde"

    ); 

    pPropertySet.SetProperty(

    "PASSWORD"

    "sde"

    ); 

    pPropertySet.SetProperty(

    "VERSION"

    "SDE.DEFAULT"

    ); 

    workspaceFactory = 

    (ESRI.ArcGIS.Geodatabase.

    IWorkspaceFactory2

    )

    new

    ESRI.ArcGIS.DataSourcesGDB.

    SdeWorkspaceF

    actoryClass

    (); 

    pWkspace = workspaceFactory.Open(pPropertySet, 0); 

     

    服务式

     

    IWorkspace

    pWkspace = 

    null

                ESRI.ArcGIS.Geodatabase.

    IWorkspaceFactory2

    workspaceFactory = 

    null

    ESRI.ArcGIS.esriSystem.

    IPropertySet

    pPropertySet = 

    new

    ESRI.ArcGIS.esriSystem.

    PropertySetClass

    (); 

    pPropertySet.SetProperty(

    "SERVER"

    "lingy"

    ); 

    pPropertySet.SetProperty(

    "INSTANCE"

    "esri_sde"

    ); 

    pPropertySet.SetProperty(

    "DATABASE"

    "orcl"

    ); 

    pPropertySet.SetProperty(

    "USER"

    "sde"

    ); 

    pPropertySet.SetProperty(

    "PASSWORD"

    "sde"

    ); 

    pPropertySet.SetProperty(

    "VERSION"

    "SDE.DEFAULT"

    ); 

    workspaceFactory = 

    (ESRI.ArcGIS.Geodatabase.

    IWorkspaceFactory2

    )

    new

    ESRI.ArcGIS.DataSourcesGDB.

    SdeWorkspaceF

    actoryClass

    (); 

    pWkspace = workspaceFactory.Open(pPropertySet, 0); 

     

     
  • 相关阅读:
    37.1 net-- udp传输
    37 net 网络编程
    review
    java day02 记录
    36.2 线程生命周期
    36.1 线程锁
    36 Thread 多线程
    35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码
    34.6 Properties(k,v存储) 和io流结合使用
    今日学习总结
  • 原文地址:https://www.cnblogs.com/raorao1994/p/7244517.html
Copyright © 2011-2022 走看看