ArcEngine 10.1 访问SDE数据库

讨论两个关键问题1、如何连接数据库 2、如何创建.sde文件。

1、连接sde数据库

在10.1中数据库的连接默认为直连,但是对于以前的代码没有任何影响,如下面的代码(如果你用的是sde10的32位数据库,连接方法和以前一样,直接用代码连接;如果你用的是64位的数据库,请将32位的数据库客户端放到安装Engine的bin目录下):

publicIWorkspaceGetSDEWorkspace(String_pServerIP,String_pInstance,String_pDatabase,String_pUser,String_pPassword,String_pVersion)

{

IWorkspacepWkspace=null;

ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2workspaceFactory=null;

ESRI.ArcGIS.esriSystem.IPropertySetpPropertySet=newESRI.ArcGIS.esriSystem.PropertySetClass();

pPropertySet.SetProperty("SERVER",_pServerIP);

pPropertySet.SetProperty("INSTANCE",_pInstance);

pPropertySet.SetProperty("DATABASE",_pDatabase);

pPropertySet.SetProperty("USER",_pUser);

pPropertySet.SetProperty("PASSWORD",_pPassword);

pPropertySet.SetProperty("VERSION",_pVersion);

workspaceFactory=(ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)newESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();

try

{

pWkspace=workspaceFactory.Open(pPropertySet,0);

}

catch(ExceptionEX)

{

//MessageBox.Show(EX.ToString());

}

returnpWkspace;

}

只是在传入参数的时候注意_pInstance一般的格式为:sdepostgresql:localhost等。

2、创建.sde文件

要创建.sde文件需要用到IWorkspaceFactory的Create方法,该方法要有数据库连接的参数信息,在这里我用的是Postgresql数据库,代码如下:

//创建.sde文件并连接数据库

IWorkspaceSDEConnect(stringFolderPath,stringFileName,String_pServerIP,String_pInstance,String_pUser,String_pPassword,String_pVersion,string_pDatabase,bool_pTrue)

{

stringpSDEPath=System.IO.Path.Combine(FolderPath,FileName);

IWorkspaceFactorypWSFactory=newSdeWorkspaceFactoryClass();

IWorkspacepWorkspace=null;

if(!File.Exists(pSDEPath))

{

IWorkspaceNamepWSName=pWSFactory.Create(FolderPath,FileName,GetPropertySet(_pServerIP,_pInstance,_pUser,_pPassword,_pVersion,_pDatabase,_pTrue),0);

}

pWorkspace=pWSFactory.OpenFromFile(pSDEPath,0);

returnpWorkspace;

}

//最后一个参数表示直连还是服务连接

publicIPropertySetGetPropertySet(String_pServerIP,String_pInstance,String_pUser,String_pPassword,String_pVersion,string_pDatabase,bool_pTrue)

{

ESRI.ArcGIS.esriSystem.IPropertySetpPropertySet=newESRI.ArcGIS.esriSystem.PropertySetClass();

pPropertySet.SetProperty("SERVER",_pServerIP);

pPropertySet.SetProperty("USER",_pUser);

pPropertySet.SetProperty("PASSWORD",_pPassword);

pPropertySet.SetProperty("VERSION",_pVersion);

if(_pTrue)

{

if(_pInstance.Contains(":"))

{

pPropertySet.SetProperty("INSTANCE",_pInstance);

pPropertySet.SetProperty("database",_pDatabase);

}

else

{

MessageBox.Show("直连字符串不对!");

}

}

else

{

pPropertySet.SetProperty("INSTANCE",_pInstance);

}

returnpPropertySet;

}

直连

IWorkspacepSDE=SDEConnect("C:\\","sde.sde","localhost","sde:postgresql:localhost","sde","sde","sde.DEFAULT","sde",true);

服务连接:

IWorkspacepSDE=SDEConnect("C:\\","service.sde","localhost","5151","sde","sde","sde.DEFAULT","sde",false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值