ado控件连接oracle,在Delphi 7中用ADOConnection控件连接Oracle 9i的问题
我在本地機器上安裝了oracle客戶端,其中tnsnames.ora文件中的內容如下:
dbtest_212.113.74.23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 212.113.74.23)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbtest)
)
)
然后在Delphi 7中新建應用程序,在窗體上放置ADOConnection控件,雙擊該控件設置數據鏈接屬性如下:
提供程序:Oracle Provider for OLE DB
數據源:dbtest_212.113.74.23
用戶名稱:xxx
密碼:xxx
單擊“測試連接”按鈕,報“ORA-12154:TNS:無法處理服務名”。如果將數據源改為“dbtest”,測試連接成功。請問這是為什么,我覺得這個地方應該填的是本地網絡服務名“dbtest_212.113.74.23”,而不應該是服務名(在oracle 9i中也稱為全局數據庫名,替代了原來的數據庫實例名的概念)“dbtest”,因為我是本地Delphi程序遠程連接oracle服務器,應該是本地Delphi程序連接oracle客戶端,oracle客戶端再去連接oracle服務器才行啊。
還有一個更奇怪的問題,為了解決上述問題,我利用控制面板自帶的“數據源(ODBC)”建立了一個系統數據源“testDSN”,其中“TNS Service Name”設置為“dbtest_212.113.74.23”,用戶名和密碼合法,然后測試數據源,連接成功;如果將“TNS Service Name”設置為“dbtest”,用戶名和密碼不變,測試數據源,連接失敗,這符合我的預期,即我上述說的原因。然后我在Delphi中將ADOConnection控件的數據鏈接屬性修改如下:
提供程序:Microsoft OLE DB Provider for ODBC Drivers
使用數據源名稱:testDSN
用戶名:xxx
密碼:xxx
單擊“測試連接”按鈕,報相同錯誤“ORA-12154:TNS:無法處理服務名”。但如果用上述在“數據源(ODBC)”中測試連接失敗的testDSN設置,在Delphi中卻可以使ADOConnection控件測試連接成功。
我真是被搞糊涂了,究竟這是什么原因導致的。說明一點,“dbtest_212.113.74.23”作為本地網絡服務器名在PL/SQL Developer和SQL PLUS中使用時,都可以正常連接oracle服務器。
作者: yac1979
發布時間: 2011-02-08
總結
以上是生活随笔為你收集整理的ado控件连接oracle,在Delphi 7中用ADOConnection控件连接Oracle 9i的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: air调用java,AIR2.0入门教程
- 下一篇: oracle11g开启1158,1、Or