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

 

ArcGIS Engine 添加SDE数据库的更多相关文章

  1. Arcgis Engine 添加一个Symbol符号样式步骤

    public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...

  2. ArcGIS Engine添加地图元素的实现

    在ArcGIS中,我们使用的制图控件除了MapControl之外,还有PageLayoutControl,用于页面布局和制图,生成一幅成品地图. PageLayoutControl 封装了PageLa ...

  3. arcgis engine - 添加图例,指北针.

    esri帮助提供了使用比例尺的方法: Working with map surrounds 主要代码为: public void AddMapSurround(IPageLayout pageLayo ...

  4. 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划

    前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...

  5. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

  6. ArcGIS Engine开发之旅05---空间数据库

    原文:ArcGIS Engine开发之旅05---空间数据库 1  Geodatabase概念 Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统 ...

  7. arcgis 10 版本连接SDE数据库报错:No ArcSDE server license found 最有效的解决方法

    这个问题可以这样解决:就在在Oracle中登入SDE数据库 进入到SDE数据库中后,找到表SERVER_CONFIG,其中有一行数据记录的就是我们需要进行修改的数据 你需要做的就是找到一个可用的,前面 ...

  8. ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新

    ArcGIS Engine效率探究——要素的添加和删除.属性的读取和更新 来自:http://blog.csdn.net/freewaywalker/article/details/23703863 ...

  9. [转] ArcGIS engine中气泡标注的添加、修改

    小生 原文 ArcGIS engine中气泡标注的添加.修改! 你微微地笑着,不同我说什么话.而我觉得,为了这个,我已等待得久了.                                   ...

随机推荐

  1. 部署和调优 1.3 pureftp部署和优化-1

    FTP 是 File Transfe Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议” 用于 Internet 上的控制件的双向传输. 可以访问    www.pureftpd. ...

  2. CMake 使用方法 & CMakeList.txt<转>

    CMake 使用方法 & CMakeList.txt cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的make ...

  3. UAC(User Agent Client) 和 UAS(User Agent Server)

    SIP协议采用Client/Server模型.每一个请求(Request)触发服务器的一个操作:每个操作被称为方法(Method):每个请求除了指明具体方法外,还携带了一系列的头域(Header fi ...

  4. scp命令 跨服务器传输

    scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读read onl ...

  5. TextView中ellipsize属性

    TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式: 例如,"encyclopedia"显示, 只是举例,以实际显示为准:) ...

  6. 杭电acm 1108题

    这是一道求两个整数最大公倍数的问题,题目比较简单.... 直接使用穷举法计算,数据不是很大.... #include "iostream" using namespace std; ...

  7. PrototypePattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...

  8. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-003比较算法及算法的可视化

    一.介绍 1. 2. 二.代码 1. package algorithms.elementary21; /*********************************************** ...

  9. 算法Sedgewick第四版-第1章基础-010一检查括号是否成对出现

    /****************************************************************************** * Compilation: javac ...

  10. python 删除正在for循环遍历的list正确做法

    先放一个python遍历发生的异常: ls =[1,2,3,4,5,6,7,8,9] for i in ls: print("i",i) print("ls", ...