博客園賬號注冊一年多,以一個編程菜鳥的角色,從諸多博友文章中學到許多,解決了不少麻煩,甚是感謝! 今天也終於鼓起勇氣申請了一個屬於自己的博客,將自己學習和項目經驗與博友分享,希望能對大家有所幫助!-----------互相學習----------
最近一直在忙ArcEngine(基於.net框架)的二次開發問題,期間有用到SDE連接Oracle數據庫的問題,用過ArcGIS系列軟件的都知道,ESRI公司在ArcGIS10.1以后推出了SDE直連數據庫的方式(當然傳統的SDE連接數據庫的方式依舊可以用,具體怎么操作這一塊可以問問度娘,或者看看ArcGIS幫助文檔),我們本次項目也是采用直連的方式,在代碼中我們依舊采用傳統的方式訪問SDE數據庫,結果,問題就出現了!——SDE not Running on server—— 就是這個問題! 困擾好久,瀏覽ArcSDE幫助文檔,官方的解釋是重啟SDE服務或者采取直連的方式,這不是等於沒說嘛,思前想后,斷定一定是連接字符串的問題!在詢問師兄未果的情況下,終於在一個論壇上找到了解決方法!具體連接方式有兩種,分享給大家。(主要是連接Oracle數據庫)
一、第一種方式
Server:服務器名或IP(可以不填)
INSTANCE: sde:oraclexx:數據庫監聽名
Database: 要連接的數據庫名(可以不填)
username: 用戶名(最好用SDE用戶)
password: 密碼

1 1 IPropertySet pPropset = new PropertySetClass(); 2 2 pPropset .SetProperty("Server",null); 3 3 pPropset .SetProperty("INSTANCE","sde:oracle11g:xxxx"); 4 4 pPropset .SetProperty("USER","sde"); 5 5 pPropset .SetProperty("PASSWORD","sde"); 6 6 pPropset .SetProperty ("DATABASE", "sde"); 7 7 pPropset .SetProperty("VERSION","SDE.DEFAULT"); 8 8 IWorkspaceFactory Fact = new SdeWorkspaceFactoryClass(); 9 9 IFeatureWorkspace Workspace = (IFeatureWorkspace)Fact.Open(pPropset ,0);
一、第二種方式
Server:服務器名或IP(可以不填)
INSTANCE: sde:oraclexx
Database: 要連接的數據庫名(可以不填)
username: 用戶名(最好用SDE用戶)
password: 密碼@數據庫監聽名

1 IPropertySet pPropset= new PropertySetClass(); 2 pPropset.SetProperty("INSTANCE","sde:oracle11g"); 3 pPropset.SetProperty("USER","sde"); 4 pPropset.SetProperty("PASSWORD","sde@testHost"); 5 pPropset.SetProperty ("DATABASE", "sde"); 6 pPropset.SetProperty("VERSION","SDE.DEFAULT"); 7 IWorkspaceFactory Fact = new SdeWorkspaceFactoryClass(); 8 IFeatureWorkspace Workspace = (IFeatureWorkspace)Fact.Open(pPropset,0);
我差不多就這樣解決的,希望能幫到你們!!!