【问题标题】:Connection to a JDBC MySQL database连接到 JDBC MySQL 数据库
【发布时间】:2015-04-01 21:56:30
【问题描述】:

我正在尝试使用 Java 连接到 JDBC MySQL 数据库,但是当我尝试运行我的程序时出现以下错误:-

找不到合适的驱动程序 a9442ca6-992c-411b-8bda-a42f00a0ab2e.mysql.sequelizer.com

我下载了以下 Jar 文件并将其添加到我的项目中:

    mysql-connector-java5.1.34-bin.jar

我不确定是否需要在声明中添加某种“导入”语句?任何帮助将不胜感激。

我的代码如下:-

package dvddblibrary;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
import java.util.Scanner;

    public class DBConnect {

        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) 
        {



            try
            {
                String host = "xxx";
                String uName = "xxx";
                String uPass = "xxx";

            Connection con = DriverManager.getConnection(host, uName,   uPass);

            }
            catch (SQLException err)
            {
                System.out.println(err.getMessage());
            }
        }

    }

【问题讨论】:

  • 拜托,您至少可以通过发布您当前的代码来帮助我们。
  • 您是在命令行还是在 Eclipse 等 IDE 中运行程序?如果您在命令行中运行它,则必须将 jar 包含在命令中以用于编译和执行部分
  • 您使用的是什么版本的 Java?

标签: java mysql jdbc database-connection


【解决方案1】:

您需要先注册驱动程序,这是加载类的副作用。试试

Class.forName("com.mysql.jdbc.Driver");

MySQL 甚至说你需要这样做

Class.forName("com.mysql.jdbc.Driver").newInstance();

对于一些“损坏的 Java 实现”,但我从未发现这是必要的。见http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html

【讨论】:

  • 如果使用 Java SE 7,则不再需要。
  • 至少当它完成并产生ClassNotFoundException时,我们知道真正的原因是jar不在类路径上。
  • 但这不是问题......对我来说,看起来更像是 OP 复制/粘贴了错误的代码,并且在 Class.forName 中有错误的类名。
  • 但是如果你在 Class.forName 中有一个复制/粘贴错误,你会得到一个 ClassNotFounException 而如果你在类路径中没有它或者使用 Java 6 或更早版本并省略 Class.forName()您将收到“没有合适的驱动程序”错误消息。让我们等待 OP 澄清或粘贴完整的代码。我的回答太早了。
  • 感谢您的帮助。对不起,我把这行代码放在哪里 - Class.forName("com.mysql.jdbc.Driver").newInstance();
【解决方案2】:

试试这个:

package dvddblibrary;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnect {
    public static void main(String[] args) {
        try {
            String host = "xxx";
            String uName = "xxx";
            String uPass = "xxx";
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(host, uName, uPass);
        } catch (SQLException err) {
            System.out.println(err.getMessage());
        }
    }
}

【讨论】:

  • 这段代码会出现编译错误,因为 try/catch 块没有覆盖“ClassNotFoundException”异常。
【解决方案3】:

从 [http://dev.mysql.com/downloads/connector/j/] 下载文件。解压它,你会在 lib 文件夹中找到一个 .jar 文件。将此文件复制到项目的 lib/ 文件夹中。

这可能会导致这个问题。

【讨论】:

    【解决方案4】:

    你的代码有两个问题;

    1) 你必须在你的 try 块的顶部添加这个;

            // Add this
            Class.forName("com.mysql.jdbc.Driver");
    

    2) 并且您的连接字符串无效,请在您的主机中尝试一个有效的连接字符串;

            String host = "jdbc:mysql://localhost/XXX";
    

    完整代码如下,(顺便说一下我没有mysql数据库,运行这个是连接错误,不是""错误)

    package dvddblibrary;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class DBConnect {
    
        public static void main(String[] args) {
    
            try {
                // Add this
                Class.forName("com.mysql.jdbc.Driver");
    
                //String host = "xxx";  // this is not valid, update with a valid connection string
                String host = "jdbc:mysql://localhost/XXX";
                String uName = "xxx";
                String uPass = "xxx";
    
                Connection con = DriverManager.getConnection(host, uName, uPass);
    
            } catch (SQLException err) {
                System.out.println(err.getMessage());
            } catch (ClassNotFoundException e) {
                System.out.println(e.getMessage());
            }
        }
    
    }
    

    输出如下,而不是得到你的“找不到合适的驱动程序”错误,我得到一个连接错误(因为我在 localhost 上没有 mysql 数据库:));

    Communications link failure
    
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    

    如果您只是更新代码,只要您的 mysql 数据库已启动且您的主机有效,此代码将正常工作

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多