码迷,mamicode.com
首页 > 数据库 > 详细

ArcEngine连接Oracle数据库

时间:2016-06-22 18:34:44      阅读:721      评论:0      收藏:0      [点我收藏+]

标签:

问题1:

最近写服务需要用ArcEngine连接Oracle数据库,以前连接数据库都会弹出一个窗体。然后填好之后就可以连接了,这样很麻烦。

代码如下:

 

     private  bool ConnectToSde()
        {
            IWorkspace workspace;
            ESRI.ArcGIS.esriSystem.IPropertySet pPropset = new ESRI.ArcGIS.esriSystem.PropertySet();
            IWorkspaceFactory pWorkspaceFact = new SdeWorkspaceFactory();
            pPropset.SetProperty("server", "localhost");
            pPropset.SetProperty("database", "database");
            pPropset.SetProperty("user", "user");
            pPropset.SetProperty("password", "password");
            pPropset.SetProperty("version", "SDE.DEFAULT");
            workspace = pWorkspaceFact.Open(pPropset, 0);
            return true;
        }

 

运行到 workspace = pWorkspaceFact.Open(pPropset, 0);的时候就会弹出一个ArcCatalog连接数据库的窗体,如下图所示:

技术分享

 

原因:

原因是在填写属性的时候没有设置实例(INSTANCE)。

解决办法:

正确代码如下:

 private  bool ConnectToSde()
        {
            IWorkspace workspace;
            ESRI.ArcGIS.esriSystem.IPropertySet pPropset = new ESRI.ArcGIS.esriSystem.PropertySet();
            IWorkspaceFactory pWorkspaceFact = new SdeWorkspaceFactory();
            pPropset.SetProperty("server", "localhost");
            pPropset.SetProperty("INSTANCE", "sde:oracle11g:localhost/database");//如果没有设置INSTANCE属性,会有连接窗体弹出
            pPropset.SetProperty("database", "database");
            pPropset.SetProperty("user", "user");
            pPropset.SetProperty("password", "password");
            pPropset.SetProperty("version", "SDE.DEFAULT");
            workspace = pWorkspaceFact.Open(pPropset, 0);
            return true;
        }

问题2:

在连接Oracle数据库的时候,如果INSTANCE属性填写错误就会出现如下问题 SDE not  running on server。

技术分享

解决办法:

见问题1解决办法贴出来的代码。

ArcEngine连接Oracle数据库

标签:

原文地址:http://www.cnblogs.com/GIScore/p/5607912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!