不同的对于相同的数据源
我正在编写一个从数据库(可以是 oracle 或 mysql)读取信息的类。 我正在使用 javax.sql.DataSource 和如下代码:
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>
我想写类似的内容
if (ds.getDriver().contains("mysql") {...}
else if (ds.getDriver().contasins("Oracle") {...}
,但是 getDriver 方法不存在....同样从上下文中我不明白如何“获取”我的资源的驱动程序类属性。
您有什么建议吗?
谢谢
I'm writing a class reading information from a database, which could be oracle or mysql.
I'm using javax.sql.DataSource and code like:
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:personalDS");
Connection conn = ds.getConnection();
After that i need to execute some query, but they must be different in case i use oracle or mysql ds. the xml file will contains:
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
or
<driver-class>com.mysql.jdbc.Driver</driver-class>
i would like to write something like
if (ds.getDriver().contains("mysql") {...}
else if (ds.getDriver().contasins("Oracle") {...}
but the method getDriver does not exist .... also from context i don't understand how 'get' the driver-class property of my resource.
Do you have any suggestion?
Thankyou
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 DatabaseMetaData 类。
http://download.oracle.com/javase /1.4.2/docs/api/java/sql/DatabaseMetaData.html
我不确定是否所有供应商都实现了这个,但这就是此类的意图。您可以从底层连接对象获取它的句柄。
You can use the DatabaseMetaData class.
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DatabaseMetaData.html
I'm not sure if all vendors implement this, but this is the intent for this class. You can get a handle to it from the underlying connection object.
您也许可以检查数据源类。 AFAIK 每个主要驱动程序都有自己的 DataSource 实现。
You might be able to check for the data source class. AFAIK every major driver has its own DataSource implementation.
您可以在某些属性文件中进行一些开关,或者您可以解析包含驱动程序类名称的初始 xml 文件以发现使用了什么数据库
You can have some switch in some property file, or you can parse the initial xml file containing driver-class-name to discover what db is used