使用 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 数据库时出现问题

如何使用JDBC将Cordova应用程序连接到MySQL数据库?

JDBC:连接到远程 mySQL 数据库?

如何使用 jdbc 代码手动连接到 mysql?