使用JDBC连接到MySQL

时间:2015-12-11 22:26:03

标签: java mysql jdbc connector

我在网上搜索试图找到使用java和JDBC连接MySQL的解决方案。不幸的是,我找到了多个答案,没有一个能解决我的问题。

我从MySQL下载了JDBC,并解压缩了该文件以找到.jar。我将.jar放在我的C:/ Program Files(X86)/ Java / JDK ... / JRE / lib / ext文件夹中。我将环境变量类路径(可能是CLASSPATH,ClassPath ??)设置为以下内容:

%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext

我根据我见过的所有不同解决方案使用我编写的脚本来获取此内容:

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


public class MySql {

    public static void main(String[] args)
    {
        Connection con = getConnection();
        if (con != null) {
            System.out.println("Connection Made");
        }
        else {
            System.out.println("Connection not made");
        }
    }

    private static Connection getConnection() {


        Connection con = null;  
        try {
            Class.forName("com.mysql.jdbc");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "java", "java");
            System.out.println("Connection Made");

            conn.close();

        } 
        catch (SQLException e)
        {
            System.out.println(e.getMessage());
            System.exit(0);
        }
        catch (ClassNotFoundException e)
        {
            System.out.println(e.getMessage());
            System.exit(0);
        }
        return con;
    }


 }

它使用javac MySql.java编译。然后当它运行时(java MySql)我得到com.mysql.jdbc。我已经读过我不需要注册驱动程序,但是当我删除Class.forName时,我得到的是“无法找到JDBC驱动程序”错误。

我无法将问题缩小到: 1)。类路径未正确设置。 2)。不正确的java连接代码。 3)。无法找到MySQL服务器。

任何帮助都将不胜感激。

编辑 -

我将.jar文件放在桌面上以进行测试。更改了系统类路径变量:

%CLASSPATH%;.;C:\User\User\Desktop\mysql-connector-java-5.1.38-bin.jar

然后当我为错误陈述添加跟踪时,我得到:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass<Unkown Source>
    at java.lang.ClassLoader.loadclass (Unknown source)
    at sun.misc.Launcher$AppClassLoader.loadclass(Unkown Source)
    etc.
    etc.

编辑2 - 我花了两天时间使用Connect Java to a MySQL database作为资源,我所遵循的所有说明都没有解决我的问题。

5 个答案:

答案 0 :(得分:4)

而不是

System.out.println(e.getMessage());

这样做

e.printStackTrace();

你会看到例外是:

java.lang.ClassNotFoundException: com.mysql.jdbc
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at MySql.getConnection(MySql.java:24)
    at MySql.main(MySql.java:10)

删除Class.forName。您可能会获得访问被拒绝或其他一些错误,但它将解决ClassNotFoundException。以下是应该有效的最终编辑版本:

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

public class MySql {

    public static void main(String[] args)
    {
        Connection con = getConnection();
        if (con != null) {
            System.out.println("Connection Made");
        }
        else {
            System.out.println("Connection not made");
        }
    }

    private static Connection getConnection() {
        Connection con = null;  
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "java", "java");
            System.out.println("Connection Made");
            conn.close();
        } 
        catch (SQLException e)
        {
            e.printStackTrace();
            System.exit(0);
        }
        return con;
    }
 }

答案 1 :(得分:1)

如果你需要Class.forName(),你必须使用正确的类:

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

但是已经不再需要JDBC 4了。

创建完整的Exception堆栈跟踪并使用结果在此处进行搜索 - 之前已解决了大多数常见错误。

NoSuitableDriverFound是一个非常强大的指示,当您运行代码时,类路径中缺少mysql-connector.jar(而不是.zip ....)。

你可以尝试这样:

运行java -cp .;C:\User\User\Desktop\mysql-connector-java-5.1.38-bin.jar MySql

答案 2 :(得分:0)

我认为你必须在类路径中添加包含驱动程序的jar文件名的路径。像这样:

%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext\mysql-connector-java-xxx.jar

答案 3 :(得分:0)

如果您的Java版本为6或更高版本,则不需要Class.formName(...)代码。 并确保一切正常,按以下方式编译和执行代码。 编译:

java -cp PATH_TO_DRIVER; YOUR_CLASS.java

执行:

java -cp PATH_TO_DRIVER; YOUR_CLASS

将YOUR_CLASS更改为您的类名称,将PATH_TO_DRIVER更改为您下载MySQL驱动程序的路径。

希望它有所帮助!

答案 4 :(得分:0)

试试这段代码!

  public static void main(String[] argv) {

    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        System.out.println("Where is your MySQL JDBC Driver?");
        e.printStackTrace();
        return;
    }

    System.out.println("MySQL JDBC Driver Registered!");
    Connection connection = null;

    try {
        connection = DriverManager
        .getConnection("jdbc:mysql://localhost:3306/yourSCHEMAname,"login", "password");

    } catch (SQLException e) {
        System.out.println("Connection Failed! Check output console");
        e.printStackTrace();
        return;
    }

    if (connection != null) {
        System.out.println("You made it, take control your database now!");
    } else {
        System.out.println("Failed to make connection!");
    }
  }
}