2009-08-26 23 views
4

を私はローカルのOracleデータベースに接続しようとしているが、私は、この不可解なエラーメッセージを取得しています: Invalid Oracle URL specified: OracleDataSource.makeURLを。無効オラクルのURL:OracleDataSource.makeURL

私は、これは私が渡しているデータベース接続パラメータを使用してエラーが原因であるかなり確信しているが、実際に、このエラーメッセージは、どのような方法で私を助けていません。私が間違っていることについてのヒントは非常に高く評価されます。

はFYI:コードを接続するために使用される、これは私たちの本番環境で使用され、そこに働くん何でハードコーディングさの文字列を除き、以下の通りです。

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

ちょうどGoogleに不可解なエラーメッセージを手渡し - あなたはすでにそれらの検索結果を確認しましたか?それらのいくつかは有望です。 –

+1

このエラーメッセージが表示された理由と理由について説明しています。これは、なぜエラーメッセージを書くのが難しいのかを示す一例にすぎません。この一般的なメッセージは、「あなたは何か間違ったことをしました」と言っています。ええ、これで解決しました。 – Ticcie

答えて

11

結局、接続を作成したコードに次の2行を追加した後、それが機能しました。

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

これまで私がそのような問題を抱えていなかった理由は分かりませんが、それは私のローカルインストールと関係があります。私の最大の牛肉は何が間違っているのかについての詳細は何も示されていないエラーメッセージです。

2

おてsetURLを使用している場合(またはGlassFishのようなあなたのコンテナがそれをしない場合)

あなたは正しい構文に

JDBCを使用してください:オラクル:薄い:@localhost:1521:SID

または

ます。jdbc:オラクル:薄い:@localhost:1521サービス名

\ DataSourceクラスは、それを解析しようとすると、構文は問題がある場合は不可解なエラーが発生します

+0

サービス名の構文にはスラッシュを使用する必要があります。そうしないと、java.sql.SQLRecoverableException(IOエラー:ポート番号の数値形式が無効です) jdbc:oracle:thin:@localhost:1521/servicename – kri

+0

** jdbc:oracle:thin @ localhost:1521:tnsname **のように、sidの代わりにTNS名を使用しなければならなかったので、ユーザーとパスワードを設定して –

+0

が動作しました。 –