2011-07-12 13 views
1

データベースから情報を読み取るクラスを作成しています。これは、oracleまたはmysqlでもかまいません。 は私が好きのjavax.sql.DataSourceとコードを使用しています:異なるデータソース用<driver-class>

その後
ctx = new InitialContext(); 
DataSource ds = (DataSource) ctx.lookup("java:personalDS"); 
Connection conn = ds.getConnection(); 

私はいくつかのクエリを実行する必要がありますが、私はOracleやMySQLのDSを使用する場合、それらは異なっている必要があります。 xmlファイルの意志が含まれています

<driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 

または

<driver-class>com.mysql.jdbc.Driver</driver-class> 

私は、コンテキストからi ....

if (ds.getDriver().contains("mysql") {...} 
else if (ds.getDriver().contasins("Oracle") {...} 

が、存在しないgetDriver法のようなものを書きたいです自分のリソースのドライバクラスのプロパティを取得する方法を理解できません。

ご意見はありますか?

ありがとうございました

答えて

1

DatabaseMetaDataクラスを使用できます。

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DatabaseMetaData.html

私は、すべてのベンダーがこれを実装するかどうかわからないんだけど、これはこのクラスの目的です。基になる接続オブジェクトからハンドルを取得することができます。

dataSource.getConnection().getMetaData() 
+0

感謝を使用しているものデシベル発見するために、ドライバクラス名を含む初期のxmlファイルを解析することができ、私はこの提案:) – Francesco

+0

を使用@ Francesco - あなたは大歓迎です。正しい答えとしてマークすることを忘れないでください:-) – Kal

0

データソースクラスを確認することができます。メジャードライバーはすべて、独自のDataSource実装を持っています。

0

あなたは、いくつかのプロパティファイル内のいくつかのスイッチを持つことができる、またはあなたが

関連する問題