发布网友 发布时间:2022-04-09 04:26
共3个回答
懂视网 时间:2022-04-09 08:48
最近写服务需要用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数据库
标签:
热心网友 时间:2022-04-09 05:56
arcsde是连接用户程序和数据库的中间纽带。他负责把空间数据存入数据库,或者从数据库读出。注意,它只能操作空间数据,普通的关系数据不受他管理。你先确定要读的是空间数据还是普通的数据。普通的数据不需要sde,直接用程序连接sql server打开表读取就行了。空间数据的话,用arcengine的功能连接arcsde,向arcsde请求数据就会返回空间数据了。arcsde可以和数据库装在一台机器上,也可以不同机器。开发的机器也可以装或不装。就是说,开发、arcsde、数据库可以分别在不同的机器上安装,靠网络连接访问即可。也可以在一台机器上,但仍然是靠网络连接的。不知道说明白没有。热心网友 时间:2022-04-09 07:14
vs自带的是sql Express,建议你选择Oracle数据库吧,装了Oracle之后再装上ArcSDE。然后你当网上稍微搜一下连接ArcSDE就有你要的例子了。至于怎么安装,网上也有。如果你装不了的话,可以私聊。追问我做的只是一个操作界面,数据库由另外一个人做,他用的是SQL Server2005。我需要从他的电脑上提取数据,但也只是关系数据库,包括GPS信息和一些其他信息,空间数据库暂时还没有。空间数据库和关系数据库能分开在两个电脑上吗?arcsde应该是和空间数据库装在一起吧?追答ArcSDE使用的是同一个Oracle服务器,但来源于不同数据库。他们是可以分数据库存储的