ArcEngine連接Oracle數據庫


問題1:

最近寫服務需要用ArcEngine連接Oracle數據庫,以前連接數據庫都會彈出一個窗體。然后填好之后就可以連接了,這樣很麻煩。

代碼如下:

 

     private  bool ConnectToSde()
        {
            IWorkspace workspace;
            ESRI.ArcGIS.esriSystem.IPropertySet pPropset = new ESRI.ArcGIS.esriSystem.PropertySet();
            IWorkspaceFactory pWorkspaceFact = new SdeWorkspaceFactory();
            pPropset.SetProperty("server", "localhost");
            pPropset.SetProperty("database", "database");
            pPropset.SetProperty("user", "user");
            pPropset.SetProperty("password", "password");
            pPropset.SetProperty("version", "SDE.DEFAULT");
            workspace = pWorkspaceFact.Open(pPropset, 0);
            return true;
        }

 

運行到 workspace = pWorkspaceFact.Open(pPropset, 0);的時候就會彈出一個ArcCatalog連接數據庫的窗體,如下圖所示:

 

原因:

原因是在填寫屬性的時候沒有設置實例(INSTANCE)。

解決辦法:

正確代碼如下:

 private  bool ConnectToSde()
        {
            IWorkspace workspace;
            ESRI.ArcGIS.esriSystem.IPropertySet pPropset = new ESRI.ArcGIS.esriSystem.PropertySet();
            IWorkspaceFactory pWorkspaceFact = new SdeWorkspaceFactory();
            pPropset.SetProperty("server", "localhost");
            pPropset.SetProperty("INSTANCE", "sde:oracle11g:localhost/database");//如果沒有設置INSTANCE屬性,會有連接窗體彈出
            pPropset.SetProperty("database", "database");
            pPropset.SetProperty("user", "user");
            pPropset.SetProperty("password", "password");
            pPropset.SetProperty("version", "SDE.DEFAULT");
            workspace = pWorkspaceFact.Open(pPropset, 0);
            return true;
        }

問題2:

在連接Oracle數據庫的時候,如果INSTANCE屬性填寫錯誤就會出現如下問題 SDE not  running on server。

解決辦法:

見問題1解決辦法貼出來的代碼。

 

注意:SQL Server INSTANCE

 

 pPropset.SetProperty("INSTANCE", "sde:sqlserver:localhost")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM