ArcEngine连接Oracle数据库
Posted Geography爱好者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcEngine连接Oracle数据库相关的知识,希望对你有一定的参考价值。
问题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解决办法贴出来的代码。
注意:SQL Server INSTANCE为:
pPropset.SetProperty("INSTANCE", "sde:sqlserver:localhost")
以上是关于ArcEngine连接Oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章