连接SDE数据库代码
By 3s4d 发表于 2007-6-5 16:39:00 |
0
什么是SDE数据库?这个问题要详细地讲解将花费大量的时间,但我可以告诉你SDE数据数据库可以是任何关系数据库。ESRI公司为了使空间数据能保存在关系数据库中,并且能很好的查询相关的空间属性而开发的一个中间件,使用SDE能很好的将空间数据保存在关系数据库中。如Orcale SQL Server 等。SDE具体细节的了解请查找相关的资料,这里只介绍怎么连接SDE数据库。SDE数据库的联机分为直接连接和通过SDE连接。当服务器的性能比较好的时候可以采用SDE连接,否则采用直接连接,这样可以减轻服务器的任务。建议采用直接连接,其实,SDE连接方式和直接连接的方式只是一个属性参数设置的问题。跟个人数据库采用属性连接的方式一样,先定义一个属性对象,然后设置属性参数,接着定义一个工作空间并用SdeWorkspaceFactoryClass()实例化它,接着加在加载图层,至于加载图层的代码,与加载个人数据库中图层的方法一样,其实不只加载这两种数据类型,加载其他类型的数据时也是采用相同的方法加载图层,只是工作空间采用不同的实例而已,下边为完整的示例代码: public void AddSDELayer(bool ChkSdeLinkModle) { //定义一个属性 IPropertySet Propset = new PropertySetClass(); if (ChkSdeLinkModle==true) // 采用SDE连接 { //设置数据库服务器名 Propset.SetProperty ("SERVER", "zhpzh"); //设置SDE的端口,这是安装时指定的,默认安装时"port:5151" Propset.SetProperty ("INSTANCE", "port:5151"); //SDE的用户名 Propset.SetProperty ("USER", "sa"); //密码 Propset.SetProperty ("PASSWORD", "sa"); //设置数据库的名字,只有SQL Server Informix 数据库才需要设置 Propset.SetProperty ("DATABASE", "sde"); //SDE的版本,在这为默认版本 Propset.SetProperty ("VERSION", "SDE.DEFAULT"); } else // 直接连接 { //设置数据库服务器名,如果是本机可以用"sde:sqlserver:." Propset.SetProperty ("INSTANCE", "sde:sqlserver:zhpzh"); //需要增加以下代码,否则连接时会弹出Spactial database connection和版本选择对话框。 Propset.SetProperty ("USER", "sa"); //此处用户名一定是user而不能是username //密码 Propset.SetProperty ("PASSWORD", "sa"); //设置数据库的名字,只有SQL Server Informix 数据库才需要设置 Propset.SetProperty ("DATABASE", "sde"); //SDE的版本,在这为默认版本 Propset.SetProperty ("VERSION", "SDE.DEFAULT");
IWorkSpace pWkSpace = pWkSpFac.open(Propset,0); /////一下为vb代码
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace As IFeatureWorkspace Dim pPropSet As IPropertySet Dim pClass As IFeatureClass Dim pLayer As IFeatureLayer Dim pMxDoc As IMxDocument Set pWorkspaceFactory = New SdeWorkspaceFactory With pPropSet '设置ArcSDE连接属性 Set pWorkspace = pWorkspaceFactory.Open(pPropSet, 0) |