一尘不染

如何使用java连接到mysql数据库?

java mysql

如何使用java连接到mysql数据库?


阅读 468

收藏
2020-01-07

共1个答案

一尘不染

逐步说明如何安装MySQL和JDBC以及如何使用它:

1.下载并安装MySQL服务器。只需按照通常的方式进行即可。每次更改时都请记住端口号。默认情况下3306。

2.下载 JDBC驱动程序并放入classpath,解压缩ZIP文件并将包含的JAR文件放入classpath。特定于供应商的JDBC驱动程序是 JDBC API的具体实现(此处提供了教程)。

如果使用的是Eclipse或Netbeans之类的IDE,则可以通过将JAR文件作为库添加到项目属性中的“ 构建路径”,将其添加到类路径中。

如果在命令控制台中执行“普通香草”操作,则在执行Java应用程序时,需要在-cpor -classpath参数中指定JAR文件的路径。

java -cp。; / path / to / mysql-connector.jar com.example.YourClass

的.是就在那里给添加当前目录到类路径中,以便它可以找到com.example.YourClass和;是类路径分隔符,因为它是在Windows中。在Unix中,:应该使用克隆。

3.在MySQL中创建一个数据库。让我们创建一个数据库javabase。您当然想要世界统治,所以我们也要使用UTF-8。

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';

是的,这里java是用户名,password也是密码。

5.确定 JDBC URL。要使用Java连接MySQL数据库,您需要使用以下语法的JDBC URL:

jdbc:mysql://主机名:端口/数据库名
  • hostname:安装MySQL服务器的主机名。如果将它安装在运行Java代码的同一台计算机上,则可以使用localhost。也可以是IP地址,例如127.0.0.1。如果遇到连接问题并使用127.0.0.1而不是localhost解决它,则说明您的网络/ DNS /主机配置存在问题。

  • port:MySQL服务器侦听的TCP / IP端口。默认情况下3306

  • databasename:您要连接的数据库的名称。那是javabase

因此,最终网址应如下所示:

jdbc:mysql:// localhost:3306 / javabase

6.使用Java 测试与 MySQL 的连接。创建一个带有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 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);
}

需要注意的是,newInstance()在呼叫未在这里需要。这只是为了修复旧的越野车org.gjt.mm.mysql.Driver。如果此行引发ClassNotFoundException,则根本不会将包含JDBC驱动程序类的JAR文件放置在类路径中。

请注意,您不需要在连接前每次都 加载驱动程序。在应用程序启动期间仅一次就足够了。

如果您使用SQLException: Connection refusedConnection timed out或MySQL专用的CommunicationsException:
Communications link failure,则意味着该数据库根本无法访问。可能有以下一种或多种原因:

  1. JDBC URL中的IP地址或主机名错误。
  2. 本地DNS服务器无法识别JDBC URL中的主机名。
  3. JDBC URL中的端口号丢失或错误。
  4. 数据库服务器已关闭。
  5. DB服务器不接受TCP / IP连接。
  6. 数据库服务器已用尽连接。
  7. Java和DB之间的某种事物正在阻止连接,例如防火墙或代理。

要解决一个或另一个,请遵循以下建议:

  1. 使用验证并测试它们ping。
  2. 刷新DNS或在JDBC URL中使用IP地址。
  3. 验证基于my.cnfMySQL DB。
  4. 启动数据库。
  5. 验证mysqld是否在不带的情况下启动–skip-networking option。
  6. 重新启动数据库,并相应地修复您的代码,使其关闭中的连接finally。
  7. 禁用防火墙和/或配置防火墙/代理以允许/转发端口。

需要注意的是关闭Connection是极为重要的。如果您不关闭连接并在短时间内保持大量连接,则数据库可能会用尽连接,并且您的应用程序可能会中断。始终Connectiontry-with-resources声明中获得。或者,如果您尚未使用Java 7,则在finally一个try-finally块中显式关闭它。关闭finally只是为了确保在发生异常时也将其关闭。这也适用于StatementPreparedStatementResultSet

2020-01-08