【问题标题】:Can't find jdbc driver? [duplicate]找不到jdbc驱动? [复制]
【发布时间】:2015-04-15 15:05:08
【问题描述】:

我已经开始学习如何将 MySQL 数据库与 Java 连接起来。而且由于我是初学者,我一直在寻找最基本的指南,并找到了this。 它看起来很简单,很容易理解并且很有帮助。

但是当我运行该代码时,它显示错误并且表为空。 :(

代码:

import java.sql.*;
import java.util.Calendar;



public class DatabaseClass {

public static void main(String args[]){
    try{
        String myDriver = "org.gjt.mm.mysql.Driver";
        String myUrl = "jdbc:mysql://localhost/test";
        Class.forName(myDriver);
        Connection conn = DriverManager.getConnection(myUrl, "root", "admin");

        Calendar calen = Calendar.getInstance();
        java.sql.Date startDate = new java.sql.Date(calen.getTime().getTime());

        String query = "insert into users (first_name, last_name, date_created, is_admin, num_points)"
                + " values(?,?,?,?,?)";

        PreparedStatement preparedStmt = conn.prepareStatement(query);
        preparedStmt.setString(1, "Name");
        preparedStmt.setString(2, "LName");
        preparedStmt.setDate(3, startDate);
        preparedStmt.setBoolean(4, false);
        preparedStmt.setInt(5, 5000);

        preparedStmt.execute();

        conn.close();

    }catch(Exception e){
        System.err.println("Got an exception!");
        System.err.println(e.getMessage());

    }
}

错误:

run:
Got an exception!
org.gjt.mm.mysql.Driver
BUILD SUCCESSFUL (total time: 0 seconds)

我输入的任何驱动程序都会发生同样的情况。

这可能是我缺乏知识,这可能不是什么大问题,但是当你是新手时,它看起来像第一世界的问题 D:

堆栈跟踪:

java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at Sranje.DatabaseClass.main(DatabaseClass.java:14)

  • 得到名为“test”的数据库
  • 在测试中有一个名为“用户”的表(带有指定字段)
  • 使用 MySQL 5.6 命令行客户端
  • NetBeans 8.0.2 中内置的代码

【问题讨论】:

  • 你把 MySQL jar 放在工作目录的某个地方了吗?
  • 你使用的 ant 目标是什么?
  • 能贴一下异常的堆栈信息吗?
  • 好吧,本教程显然没有说明您必须添加提供类 org.gjt.mm.mysql.Driver 的 MySQL 连接库以及允许您连接到 MySQL 数据库的其他库。下载此 jar,将其添加到应用程序的类路径并执行它。
  • dev.mysql.com/downloads/connector/j 我认为你需要这样的东西。你应该找到一个更好的教程来指导你从头到尾。 vogella.com/tutorials/MySQLJava/article.html这个有点含糊,但是好像步骤全了。

标签: java mysql jdbc


【解决方案1】:

您应该将一个包含 MySQL 驱动程序的文件放在 NetBeans 中的类路径中,以便 IDE 知道您要加载的驱动程序类。

另外一个奇怪的驱动名称org.gjt.mm.mysql.Driver,通常是com.mysql.jdbc.Driver。请尝试使用 com.mysql.jdbc.Driver 驱动程序名称并将 mysql-connector jar 放入您的类路径。您可以在 MySQL JDBC Connector JAR 中找到驱动程序,您可以在此处下载:

http://dev.mysql.com/downloads/connector/j/

另外我建议你在你的 catch 中写上e.printStackTrace(),这样你就知道真正出了什么问题。

【讨论】:

  • 谢谢大卫 ^^ 我使用了org.gjt.mm.mysql.Driver,因为我在某处读到它用于 MySQL...不知道,从现在开始将使用com.mysql.jdbc.Driver
  • @SadCoffeeBean org.gjt.mm.mysql.Driver 只是为了向后兼容而提供的,com.mysql.jdbc.Driver 现在已经使用了十多年了,最重要的是,您不再需要使用Class.forName 显式加载驱动程序。一年前最后一次更新的“教程”仍然使用这些过时的做法,这一事实表明它的质量并不好。
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 2020-11-03
  • 2012-04-13
  • 2019-08-24
  • 2015-06-15
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多