首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JDBC连接到MySQL

问使用JDBC连接到MySQL
EN

Stack Overflow用户
提问于 2015-12-12 06:26:03
回答 5查看 2.4K关注 0票数 1

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

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

代码语言:javascript
复制
%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext

我使用基于我所见过的所有不同解决方案编写的脚本来获得以下结果:

代码语言:javascript
复制
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文件放到了桌面上。已更改系统类路径变量:

代码语言:javascript
复制
%CLASSPATH%;.;C:\User\User\Desktop\mysql-connector-java-5.1.38-bin.jar

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

代码语言:javascript
复制
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作为资源,但我遵循的说明都没有解决我的问题。

EN

回答 5

Stack Overflow用户

发布于 2015-12-12 06:33:24

而不是

代码语言:javascript
复制
System.out.println(e.getMessage());

执行此操作

代码语言:javascript
复制
e.printStackTrace();

您将看到例外情况是:

代码语言:javascript
复制
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。以下是最终编辑后的版本,应该可以使用:

代码语言:javascript
复制
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;
    }
 }
票数 4
EN

Stack Overflow用户

发布于 2015-12-12 06:35:16

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

代码语言:javascript
复制
     Class.forName("com.mysql.jdbc.Driver");

但随着JDBC 4的出现,这一点已不再需要。

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

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

您可以像这样尝试:

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

票数 1
EN

Stack Overflow用户

发布于 2015-12-12 06:34:17

我认为您必须在类路径中添加路径,包括驱动程序的jar文件名。如下所示:

代码语言:javascript
复制
%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext\mysql-connector-java-xxx.jar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34233558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档