2009-08-26 125 views
4

我試圖連接到本地的oracle數據庫,但我得到這個神祕的錯誤消息: Invalid Oracle URL specified: OracleDataSource.makeURL指定的Oracle URL無效:OracleDataSource.makeURL

我敢肯定,這是由於我傳遞的數據庫連接參數的錯誤,但實際上,這個錯誤消息不以任何方式幫助我。任何暗示,我做錯了什麼將不勝感激。

供參考:用於連接的代碼位於下方,硬編碼字符串除外,這是我們的生產環境中使用的並且在那裏有效。

OracleDataSource dataSource = new OracleDataSource(); 
dataSource.setServerName("localhost"); 
dataSource.setUser(userName); 
dataSource.setPassword(password); 
dataSource.setDatabaseName("orcl"); 
return dataSource.getConnection(); 
+0

剛把這個神祕的錯誤信息交給谷歌 - 你是否已經檢查過這些搜索結果?其中一些聽起來很有希望。 – 2009-08-26 07:23:02

+1

檢查了這些錯誤消息和非錯誤消息的原因或時間。這僅僅是爲什麼寫錯誤信息很難說明的一個例子,這個通用信息告訴我「你做錯了什麼」,是的,現在我明白了,現在讓我解決它。 – Ticcie 2009-08-26 07:41:18

回答

11

順便說一句,在將下面兩行添加到創建連接的代碼後,它就起作用了。

dataSource.setPortNumber(1521); 
dataSource.setDriverType("thin"); 

我不明白爲什麼我們之前沒有這個問題,但這可能與我的本地安裝有關。我最大的問題在於錯誤消息沒有提供有關錯誤的詳細信息。

2

如果你使用setUrl(或者比如GlassFish您的容器做它)

一定要使用正確的語法

的jdbc:神諭:薄:@localhost:1521:SID

的jdbc:神諭:薄:@localhost:1521 \服務名稱

數據源類嘗試分析它,並賦予神祕的錯誤,如果語法有問題

+0

服務名稱語法應該使用正斜槓,否則您將得到java.sql.SQLRecoverableException(java.sql.SQLRecoverableException:IO錯誤:端口號的數字格式無效) jdbc:oracle:thin:@localhost:1521/servicename – kri 2016-08-31 07:20:37

+0

我不得不使用TNS名稱而不是sid,比如在** jdbc:oracle:thin @ localhost:1521:tnsname **中,然後我設置了用戶名和密碼並且它的工作原理 – 2017-12-21 08:48:05

+0

爲什麼 - 其中一個有去工作 – 2018-01-04 17:15:50