为了账号安全,请及时绑定邮箱和手机立即绑定

将Java连接到MySQL数据库

将Java连接到MySQL数据库

肥皂起泡泡 2019-05-23 13:12:10
将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
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

这是一步一步解释如何安装MySQL和JDBC以及如何使用它:

  1. 下载并安装MySQL服务器。按照通常的方式做到这一点。无论何时更改端口号,请记住端口号。这是默认情况3306

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

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

    如果您在命令控制台中执行“普通的vanilla”,则需要在执行Java应用程序时在-cp-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的://主机名:端口/数据库名称

    所以最终的URL应如下所示:

    JDBC:MySQL的://本地主机:3306 / javabase
    • hostname:安装MySQL服务器的主机名。如果它安装在您运行Java代码的同一台机器上,那么您可以使用它localhost。它也可以是一个IP地址127.0.0.1。如果您遇到连接问题并使用127.0.0.1而不是localhost解决它,那么您的网络/ DNS /主机配置中存在问题。

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

    • databasename:您要连接的数据库的名称。那是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 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,则意味着DB根本无法访问。这可能有以下一个或多个原因:

    要解决这个问题,请遵循以下建议:

    请注意,关闭Connection非常重要。如果您没有关闭连接并在短时间内继续获取大量连接,那么数据库可能会用完连接而您的应用程序可能会中断。始终Connectiontry-with-resources声明中获得。或者,如果你对Java 7的是没有,明确地关闭它在finally一个的try-finally块。关闭finally只是为了确保它在异常情况下也会关闭。这也适用于StatementPreparedStatementResultSet

    1. 验证并测试它们ping

    2. 刷新DNS或使用JDBC URL中的IP地址。

    3. 根据my.cnfMySQL DB 验证它。

    4. 启动数据库。

    5. 验证mysqld是否在没有启动的情况下启动--skip-networking option

    6. 重新启动数据库并相应地修改代码以关闭连接finally

    7. 禁用防火墙和/或配置防火墙/代理以允许/转发端口。 

    1. JDBC URL中的IP地址或主机名是错误的。

    2. 本地DNS服务器无法识别JDBC URL中的主机名。

    3. JDBC URL中的端口号丢失或错误。

    4. 数据库服务器已关闭。

    5. 数据库服务器不接受TCP / IP连接。

    6. 数据库服务器已用完连接。

    7. Java和DB之间的某些东西阻止了连接,例如防火墙或代理。 

就连接问题而言,这就是它。您可以在这里找到一个更高级的教程,如何借助基本的DAO类在数据库中加载和存储完整的Java模型对象。


查看完整回答
反对 回复 2019-05-23
  • 3 回答
  • 0 关注
  • 705 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信