使用 JDBC 连接到 MySQL 数据库
Posted
技术标签:
【中文标题】使用 JDBC 连接到 MySQL 数据库【英文标题】:Connecting to a MySQL DataBase with JDBC 【发布时间】:2014-10-26 17:13:23 【问题描述】:我有一个简单的代码需要连接到 mysql 数据库并执行查询。
try
conn =
DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=1234");
Statement stm = conn.createStatement();
stm.executeQuery(query);
return true;
此代码在只有一个具有 void main 的类的测试项目中就像一个魅力。 但是在我的 Web 应用程序项目中,我使用的是 apache tomcat,并且相同的代码显示错误:
SQLException: No suitable driver found for jdbc:mysql://localhost/test?user=root&password=1234
我已经添加了 jar、类路径以及所有内容。因为我使用的是tomcat,所以我需要做一些特别的事情吗? 谢谢, 龙人
【问题讨论】:
可能重复:***.com/questions/22384710/…***.com/questions/22384710/… 你忘了把port
no: 3306
替换为jdbc:mysql://localhost:3306/dbname?user=root&password=1234
照做了。
【参考方案1】:
用途:
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=1234");
【讨论】:
Class.forName()
不再需要。从 Java 6 开始,适当的驱动程序会自动注册。
我承认这可能是答案。我会小心这个答案,因为在某些情况下,即使您尝试以这种方式加载类,您也无法加载驱动程序。换句话说,这个答案适用于“大多数”实例,但是当我们谈论涉及的 Tomcat 容器时,您会在问题中引入更多变量。 Java 没有名称空间,但您可能会遇到类似的问题。如果 Dragos 没有将此答案标记为绿色,那么我们就会知道存在问题。
@a_horse_with_no_name 我认为您的意思是 JDBC4 自动加载...它不是 Java 6+ 的东西。
@djangofan:JDBC 4.0 是随 Java6 引入的——所以它是 Java6 的东西(Java 5 不能有 JDBC4)。而且我认为 Java6 的服务注册不仅限于 JDBC 驱动程序 - JDBC API 只是利用了它(但我可能会弄错)
@a_horse_with_no_name 我的意思是你可以在 Java 6 中使用 JDBC3,但它不会自动加载。【参考方案2】:
我发现了问题。我必须在配置构建路径窗口中的 java 构建路径上方的部署程序集中添加 jdbc。
【讨论】:
【参考方案3】:您忘记加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
在建立连接之前。您的网址中也缺少端口。
你也应该使用
getConnection(String url, String user, String password)
API 提供更好的可读性,而不是在 url 中提供用户/密码。
【讨论】:
Class.forName()
不再需要。从 Java 6 开始,适当的驱动程序会自动注册。
你怎么知道 OP 正在使用 Java 6?
现在我得到了严重:处理请求期间发生异常:com.mysql.jdbc.Driver java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我只是想让连接正常工作。在我能把它变成正确的代码之后。
所以你的类路径中没有驱动程序。确保你的类路径中有 mysql 驱动程序。请参阅有关驱动程序 url vogella.com/tutorials/MySQLJava/article.html#jdbcdriver 以及您需要遵循的步骤以上是关于使用 JDBC 连接到 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章
尝试连接到 Mysql 数据库时找不到类 com.mysql.jdbc.Driver jdbc
无法使用 JDBC 连接到 docker 中的本地 MySQL
Java - 使用 JDBC 连接到在线 MySQL 数据库时出现问题