h0452
路人甲
路人甲
  • 注册日期2006-06-30
  • 发帖数2
  • QQ
  • 铜币107枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1151回复:2

在VC++下如何连接SDE?

楼主#
更多 发布于:2006-06-30 21:08
<P>在VC++下要连接空间数据库,我是这样做得:<BR>           IWorkspacePtr pWorkspace;<BR> IWorkspaceNamePtr pWorkspaceName;<BR> IRasterDatasetPtr pRasterDataset;<BR> IDatasetNamePtr pDatasetName;<BR> INamePtr pName;<BR> IRasterLayerPtr pRasterLayer;<BR> <BR> CComBSTR server=CComBSTR("ESUNDATA-2415A3");<BR> CComBSTR instance=CComBSTR("ESUNDATA-2415A3");<BR> CComBSTR user=CComBSTR("sa");<BR> CComBSTR passwd=CComBSTR("sa");<BR> CComBSTR database=CComBSTR("CityMap");<BR> CComBSTR version=CComBSTR("SDE.DEFAULT");<BR> <BR> IPropertySetPtr pPropertySet;<BR> pPropertySet.CreateInstance(CLSID_PropertySet);</P>
<P> //配置连接属性<BR> pPropertySet->SetProperty(CComBSTR("SERVER"),CComVariant(server));<BR> pPropertySet->SetProperty(CComBSTR("INSTANCE"),CComVariant(instance));<BR> pPropertySet->SetProperty(CComBSTR("USER"),CComVariant(user));<BR> pPropertySet->SetProperty(CComBSTR("PASSWORD"),CComVariant(passwd));<BR> pPropertySet->SetProperty(CComBSTR("DATABASE"),CComVariant(database));<BR> pPropertySet->SetProperty(CComBSTR("VERSION"),CComVariant(version));</P>
<P> //打开Workspace<BR> IWorkspaceFactoryPtr pWorkspaceFactory;<BR> pWorkspaceFactory.CreateInstance(CLSID_SdeWorkspaceFactory);<BR> HRESULT hr;<BR> <BR> hr=pWorkspaceFactory->Open(pPropertySet,NULL,;pWorkspace);<BR>但是返回的hr值为-2147216021,为什么不正确?我的所有服务是开启的,并且也引入了esriDatasourceGDB库,请高手指点一下</P>
喜欢0 评分0
h0452
路人甲
路人甲
  • 注册日期2006-06-30
  • 发帖数2
  • QQ
  • 铜币107枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-07-03 11:36
<P>解决了,属性设置没对应</P><img src="images/post/smile/dvbbs/em04.gif" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2006-07-03 15:59
<P>帮助里就有了</P><PRE><CODE><FONT color=#008000>//</FONT></CODE>
<CODE><FONT color=#008000>//</FONT></CODE>
<CODE><FONT color=#008000>// openSDEWorkspace:  create and open the sde workspace based on the provided information</FONT></CODE>
<CODE><FONT color=#008000>//</FONT></CODE>
HRESULT connectToSDE(BSTR server,
                     BSTR instance,
                     BSTR user,
                     BSTR passwd,
                     BSTR database,
                     BSTR version,
                     IWorkspace ** outWorkspace)
{
  <CODE><FONT color=#0000ff>if</FONT></CODE> (outWorkspace == NULL)
    <CODE><FONT color=#0000ff>return</FONT></CODE> E_POINTER;

  <CODE><FONT color=#008000>// create the property set for the connection parameters</FONT></CODE>
  IPropertySetPtr ipPropertySet;
  ipPropertySet.CreateInstance(CLSID_PropertySet);

  <CODE><FONT color=#008000>// configure the propertyset</FONT></CODE>
  ipPropertySet->SetProperty(CComBSTR("SERVER"),    CComVariant(server));
  ipPropertySet->SetProperty(CComBSTR(L"INSTANCE"), CComVariant(instance));
  ipPropertySet->SetProperty(CComBSTR(L"DATABASE"), CComVariant(database));
  ipPropertySet->SetProperty(CComBSTR(L"USER"),     CComVariant(user));
  ipPropertySet->SetProperty(CComBSTR(L"PASSWORD"), CComVariant(passwd));
  ipPropertySet->SetProperty(CComBSTR(L"VERSION"),  CComVariant(version));

  <CODE><FONT color=#008000>// open workspace</FONT></CODE>
  IWorkspaceFactoryPtr ipWorkspaceFactory;
  ipWorkspaceFactory.CreateInstance(CLSID_SdeWorkspaceFactory);
  <CODE><FONT color=#0000ff>return</FONT></CODE> ipWorkspaceFactory->Open(ipPropertySet, NULL, outWorkspace);
}</PRE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部