如何解决“找不到合适的驱动程序”错误

时间:2015-06-21 11:29:23

标签: java postgresql netbeans jdbc

我正在运行Netbeans 8.0.2。我正在学习JDBC并希望将它连接到PostgreSQL数据库。我查找了所有可能的答案,但没有答案使它成功。

我还选择了左侧菜单中的库PostgreSQL JDBC Driver -postgresql-9.2-1002.jdbc4.jar

显示的错误是:

  

SQL exception occuredjava.sql.SQLException:找不到合适的驱动程序   对于Jdbc:postgresql:// localhost:5432 / postgres

以下是代码:

try   { 

    Class.forName("org.postgresql.Driver");

  }
  catch(ClassNotFoundException e) {
     System.out.println("Class not found "+ e);
  }
     try {

     Connection con = DriverManager.getConnection
     ("Jdbc:postgresql://localhost:5432/postgres","postgres",
     "gautam");

     Statement stmt = con.createStatement();
     ResultSet rs = stmt.executeQuery
     ("SELECT * FROM role");
     System.out.println("id  name");

     while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        System.out.println(id+"   "+name);

     }
  }
  catch(SQLException e){
     System.out.println("SQL exception occured" + e);
  }

2 个答案:

答案 0 :(得分:1)

我很快就尝试了你的代码并且首先得到了同样的错误:

通过更正:DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres","gautam");它有效。

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

public class NewClass {

    public void initialize() {
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("Class not found " + e);
        }
        try {
            Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres","gautam");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM role");
            System.out.println("id  name");

            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                System.out.println(id + "   " + name);

            }
        } catch (SQLException e) {
            System.out.println("SQL exception occured" + e);
        }
    }

    public static void main(String[] args) {
        new NewClass().initialize();
    }

}

DriverManager询问注册到它的每个驱动程序是否可以读取URL:“jdbc:postgresql:// localhost:5432 / postgres”。
第一个返回{{1的驱动程序使用。
在你的情况下没有驱动程序返回true。
返回true或false的驱动程序的方法是true

您可以使用以下方法进行测试:

acceptsURL("jdbc:postgresql://localhost:5432/postgres")

答案 1 :(得分:1)

我正在使用NetBeans 11.1 我有与该线程标题相同的错误消息。 我能够在Linux命令行上编译并运行Java代码。

两天以来,我一直忽略了NetBeans中的以下错误消息。我没有将此错误消息与我的问题联系起来:

跳过不存在的resourceDirectory / home / thatsme / NetBeansProjects / myproject / src / main / resources

  1. 我在命令行上手动创建了该目录
  2. 我使用PostgreSQL驱动程序“ postgres-42.2.8.jar”将文件复制到了该目录中

从那时起,我的代码在NetBeans中也可以正常运行。我知道,这是一个非常特殊的错误,但也许也会帮助另一个错误。只想在这里给些东西。

编辑: 我在ORACLE文件ojdbc8.jar中遇到了同样的问题,而我上面提到的解决方案没有帮助。但是,在我解压缩ojdbc8.jar后,它运行良好。

$ jar xf ojdbc8.jar

如果我在Netbeans / Maven之外运行我的应用程序,那么它也可以与CLASSPATH中的打包版本一起使用。