本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
提问:用Java去连接Mysql数据库产生的问题
您如何用Java连接到的MySQL数据库?
当我尝试连接时,我得到以下错误信息:
java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
或者是
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
或者是
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
回答1:
DriverManager是一种相当古老的使用方式。更好的方法是DataSource通过查找已经为您配置的应用服务器容器来获取一个:
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");
或直接从数据库驱动程序实例化和配置一个:
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setServerName("myDBHost.example.org");
然后从中获取连接,如上:
Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS");
...
rs.close();
stmt.close();
conn.close();
回答2:
以下是如何安装MySQL和JDBC以及如何使用它们的逐步说明:
1, 下载并安装MySQL Server,只需按照通常的方式进行即可。每次更改时都请记住端口号。默认情况下3306。
2, 下载JDBC驱动程序并放入classpath,解压缩ZIP文件并将包含的JAR文件放入classpath。特定于供应商的JDBC驱动程序是JDBC API的具体实现
3, 在MySQL中创建一个数据库。让我们创建一个数据库javabase。
CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
4,为Java创建用户并授予其访问权限。仅仅使用root是一种不好的做法。
CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
5,确定JDBC URL。要使用Java连接MySQL数据库,您需要使用以下语法的JDBC URL:
jdbc:mysql://主机名(可以用localhost):端口/数据库名
//举个栗子
jdbc:mysql:// localhost:3306 / javabase
// 冒号都是英文
6,创建一个带有main()测试连接方法的简单Java类。
String url = "jdbc:mysql://localhost:3306/javabase";
String username = "java";
String password = "password";
System.out.println("Connecting database...");
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
如果获得SQLException: No suitable driver,则意味着JDBC驱动程序根本没有自动加载,或者JDBC URL错误(即,任何已加载的驱动程序都无法识别它)。通常,只要将JDBC 4.0驱动程序放入运行时类路径中,就应该自动加载该驱动程序。你可以手动加载确定问题到底出在哪。
System.out.println("Loading driver...");
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded!");
} catch (ClassNotFoundException e) {
throw new IllegalStateException("Cannot find the driver in the classpath!", e);
}