java - JDBC 驱动程序 - ClassNotFoundException、NetBeans

标签 java netbeans jdbc database-connection

我进行了很多搜索并花了很多时间尝试注册 JDBC 驱动程序。

首先,我将 ojdbc7.jar 文件(从 Oracle 下载)复制到如下所示的目录中:

Driver File(s): /Users/Kamil/glassfish4/jdk7/jre/lib/ext/ojdbc7.jar
Driver Class: oracle.jdbc.OracleDriver
// this is copied from Services/Databases/Drivers/ojdbc

然后,我尝试了以下代码:

try {
    Driver myDriver = new oracle.jdbc.driver.OracleDriver();
    DriverManager.registerDriver(myDriver);
} catch (ClassNotFoundException ex) {
    System.out.println("Error: unable to load driver class!");
    System.exit(1);
}

...还有这个:

try {
    Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException ex) {
    System.out.println("Error: unable to load driver class!");
    System.exit(1);
}

...并用这一行代替:

Class.forName("oracle.jdbc.driver.OracleDriver");

我总是得到 ClassNotFoundException :(

这是我尝试运行的代码:

Connection DBconn;
String USER = "root";
String PASS = "root";
System.out.println("Connecting to database...");

DBconn = DriverManager.getConnection("mysql://localhost:3306/RestToolDatabase", USER, PASS);

System.out.println("Creating statement...");
Statement stmt = DBconn.createStatement();
String sql;
sql = "select surname, id, age\n"
        + "from customers \n"
        + "where name = \"maria\" \n"
        + "order by id;";
ResultSet rs = stmt.executeQuery(sql);

我还阅读了有关设置类路径的信息,如here所述:

  • 右键单击您的项目。

  • 选择属性。

  • 点击左侧的“库”。

  • 在“编译”选项卡下 - 单击“添加 Jar/文件夹”按钮。

    但是 NetBeans 中没有“属性/库”选项...

我使用 Maven,并且某些库添加了以下依赖项:

<dependency>
    <groupId>ojdbc</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <type>pom</type>
</dependency>

也许有一些解决方法,或者其他自动添加它的方法?它应该很简单,但我没有经验并且在这方面浪费了很多时间。请帮忙。

编辑:谢谢您的回复,是的,我在 localhost:3306 [root] 使用 MySQL 服务器。我在这里安装了 MySQL JDBC 连接器:

/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/ide/modules/ext/mysql-connector-java-5.1.23-bin.jar

当我进入“服务”-->“驱动程序”-->“MySQL(连接器/J驱动程序)”时,驱动程序类路径与您的建议完全相同,所以我使用 Class.forName("com.mysql. jdbc.Driver”)现在。 我右键单击“MySQL(连接器/J 驱动程序)”驱动程序,然后转到“使用...连接”-->“本地主机,端口 3306,用户,密码”。现在已连接,我看到新的连接。但我仍然得到 ClassNotFoundException。

编辑 2 - 这个解决方案对我有用:

我在 pom.xml 中的依赖项中添加了以下内容:

    </dependency>
        <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.23</version>
</dependency>

...以及构建的应用程序;驱动程序已下载并安装。就这么简单...我花了很多时间在这上面...它有效 - 是的! :)

最佳答案

您正在 MySQL 数据库上使用 Oracle JDBC 驱动程序,您应该使用

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

编辑:感谢@duffymo和@Mark-Rotteveel的评论,他们注意到连接的URL也是错误的,正确的连接是:

    Connection DBconn;
    String USER = "root";
    String PASS = "root";
    DBconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/RestToolDatabase?" + "user="+USER+"&password="+PASS);

关于java - JDBC 驱动程序 - ClassNotFoundException、NetBeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120200/

相关文章:

java - Eclipse 调试未打开窗口

java - 从 MySQL DB 中选择后日期倒退一天

java - Hibernate:使用相同连接列的多个关系

java - 运行docker容器 "NoClassDefFoundError"时出错

java - 从 String 中删除除 controlchars 之外的不可打印的 utf8 字符

java - 为什么Java中的main方法总是需要参数?

netbeans - 如何在NetBeans中将打开的文件与项目树链接

java - UndoRedo.Manager 和 JCheckBox

java - 更改 war 文件中的默认页面

java - 使用上下文连接到 Tomcat 中的 MS Access