java - 如何管理与动态创建的数据库的连接

标签 java mysql tomcat jdbc

我需要在我的网络应用中管理与多个数据库的连接。以下是有关当前实现的事实:

1- 我用的是 Tomcat

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

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

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

提前谢谢你。

最佳答案

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

jdbc:mysql://localhost:3306

只需要通过Connection#setCatalog()指定数据库即可或者直接在 SQL 查询中。另见其 reference documentation :

If the database is not specified, the connection will be made with no default database. In this case, you will need to either call the setCatalog() method on the Connection instance or fully specify table names using the database name (that is, SELECT dbname.tablename.colname FROM dbname.tablename...) in your SQL. Not specifying the database to use upon connection is generally only useful when building tools that work with multiple databases, such as GUI database managers.

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

关于java - 如何管理与动态创建的数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195556/

相关文章:

java - 在 Linux 上将 MySQL 字符集更改为 UTF8,以便它可以与 JDBC 一起使用

apache - DNS 和 Web 应用程序部署

tomcat - 如何在 Tomcat web.xml 中添加 header ?

spring - Jelastic Tomcat Console.Log 文件

java - 线程 "main"java.lang.UnsupportedClassVersionError 中的异常,不支持的 major.minor 版本 52.0

mysql - Nodejs 从表中删除但选择不起作用

php - 如何以应用程序仍可读的方式安全地存储密码?

java - Apache Camel - JUNIT 测试中端点上没有可用的消费者

java - 显示 JCheckBox 项目的全名

java - 刷新按钮禁用