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); 

 

 
posted @ 2017-07-27 14:03  扰扰  阅读(1105)  评论(0编辑  收藏  举报