【ASP.NET】ASP.NET連結Oracle資料庫
兩年前交接一個使用Oracle當資料庫的系統,在上一位工程師的解說下,一直以為ASP.NET連結Oracle就是這麼一回事,直到最近資料庫主機更換,必須重新設定參數,設定後卻一直無法連線,經過不斷的測試,才發現原來上一位工程師交接給我的設定方式是錯的!原來這兩年我一直處在這種錯誤的觀念裡,真的是交接到好的工程師讓你上天堂,交接到爛的工程師讓你住套房阿!不過,其實我們都該隨時檢視我們學到的東西是否正確才是。
回主題,其實ASP.NET連結Orcale資料庫並不難,Orcale有提供Developer Tools,類似一個類別庫,可以讓我們像使用ADO.NET的方式去存取Oracle資料。Oracle在安裝時分為Server跟Client,Server不難理解,就是DB主機端的程式,而Client有點類似於MS SQL中的SQL Server Management Studio,可以讓我們連線主機去操作DB,要特別注意的是,如果你的系統是單機系統,你必須在單機上安裝Client才能讓系統連結到DB。
在ASP.NET中Oracle的connectionStrings結構如下:
<add name="OracleDS" connectionString="Data Source=ABC;Persist Security Info=True;User ID=XXX;Password=XXX" providerName="System.Data.OracleClient"/>
和MS SQL的connectionStrings差不多,但Data Source這個屬性是個重點,我們繼續看下去。
安裝Clinet後,在Clinet的功能表中有一個Enterprise Manager主控台(以10g為例),它類似MS SQL中的SQL Server Management Studio,可讓我們連結DB。連結時必須設定主機名稱、Port、以及SID和Net Service Name,SID類似於MS SQL中的資料庫名稱。
設定好之後會在Tree裡出現一個物件,我們可以展開它來操作DB。(展開要先輸入帳號密碼)
回到剛談到的Data Source屬性,我的上一位交接的工程師說,這個屬性設定的值要用上面設定中的Net Service Name,這是錯的!如果要讓系統連接資料庫,上面的步驟根本不需要,正確的設定方法是使用Client功能表中的網路組態輔助程式,步驟如下:
1.開啟網路組態輔助程式後,選擇區域網路服務名稱組態。
2.選擇新增。
3.輸入服務名稱,也就是SID
4.選擇通訊協定
5.設定主機名稱
6.選擇執行測試來測試看看。
7.一開始測試可能會失敗,因為我們還沒有設定帳號密碼,點選變更登入,輸入正確的帳號密碼即可。
8.最後輸入網路服務名稱,這個名稱也就是ASP.NET連接字串中,Data Source的設定值。
OK!