不同的对于相同的数据源

发布于 2024-11-19 18:44:34 字数 720 浏览 3 评论 0原文

我正在编写一个从数据库(可以是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

江心雾 2024-11-26 18:44:34

您可以使用 DatabaseMetaData 类。

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

我不确定是否所有供应商都实现了这个,但这就是此类的意图。您可以从底层连接对象获取它的句柄。

dataSource.getConnection().getMetaData()

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.

dataSource.getConnection().getMetaData()
梦幻的味道 2024-11-26 18:44:34

您也许可以检查数据源类。 AFAIK 每个主要驱动程序都有自己的 DataSource 实现。

You might be able to check for the data source class. AFAIK every major driver has its own DataSource implementation.

帥小哥 2024-11-26 18:44:34

您可以在某些属性文件中进行一些开关,或者您可以解析包含驱动程序类名称的初始 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文