2011-08-25 101 views
12

我需要在我的Web应用程序中管理到多个数据库的连接。以下是关于目前执行的事实:如何管理到动态创建的数据库的连接

1 - 我使用Tomcat

2-数据库在运行时动态创建(我使用的MySQL)

毫无疑问,有一个连接池管理数据库连接是最佳的。 由于数据库在应用程序开始时并不知道,因此我无法设置数据源并建立连接池。 (我无法在Tomcat中找到制作动态连接池的方法:在运行时创建的连接池)。

我的问题是:还有什么其他选择可以有效地处理与多个数据库的连接? (我自己没有经验来实现连接池) 是否有任何可以与tomcat一起使用的库,并允许我在运行时为不同的数据库建立多个连接池?如果不是,你建议我做什么而不是连接池? 我对这个问题相当新,因此如果我搞乱了概念,请纠正并引导我。

预先感谢您。

+1

在这种情况下,“数据库”一词有点含糊不清。你的意思是“数据库服务器”或“数据库”,如CREATE TABLE中的“CREATE DATABASE”或“数据库表”? – BalusC

+0

数据库在创建数据库。我使用每个客户的模式(在mysql中,模式是数据库)。谢谢你的帮助。 –

+0

谢谢。我发布了一个答案。 – BalusC

回答

14

MySQL JDBC驱动程序允许从连接URL省略数据库名称如下:

jdbc:mysql://localhost:3306

你只需要通过Connection#setCatalog()或直接在SQL查询指定数据库。另请参阅其reference documentation

如果未指定database,则将建立连接而不使用默认数据库。在这种情况下,您需要调用Connection实例上的setCatalog()方法,或者使用SQL中的数据库名称(即SELECT dbname.tablename.colname FROM dbname.tablename...)完全指定表名。不建议连接时使用的数据库通常仅在构建可用于多个数据库的工具(如GUI数据库管理器)时才有用。

这允许您在Tomcat中创建单个可重用的连接池数据源。您可能只需要重写连接管理器和/或SQL查询。

+1

我如何礼貌地表达快乐?我已经花了一个多月的时间,现在只是为了找出它的如此简单,由于供应商的具体实施。谢谢。正如你所建议的那样,我将建立一个连接池数据源(我已经设法完成),并简单地重写查询来解决正确的模式。非常感谢你:)))))) –

+1

不客气。您可以提供赏金或从我的亚马逊愿望清单中发送一些东西(另请参阅我的用户配置文件:) :) – BalusC

+8

done :)列表中的第一项。 –

0

open中有足够的连接池框架。 Proxool绝对是最好的。它非常灵活和易于使用。