|
阅读:1152回复:2
在VC++下如何连接SDE?
<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> |
|
|
1楼#
发布于:2006-07-03 11:36
<P>解决了,属性设置没对应</P><img src="images/post/smile/dvbbs/em04.gif" />
|
|
|
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> |
|
|