JDBC Postgresql仅在Main类中工作

时间:2018-08-21 15:13:00

标签: java postgresql jdbc driver

我正在做一个需要处理PostgreSQL数据库的程序。我下载了jdbc驱动程序.jar并将其放在lib文件夹中,并配置了Intellij。

当我使用Main.java中的Postgres JDBC驱动程序时,一切正常。这是一个打印示例表中所有内容的示例:

public class Main {
    public static void main(String[] args) throws java.io.IOException {
        Class.forName("org.postgresql.Driver");
        Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Benerator","postgres","newPassword");
        PreparedStatement stmt = con.prepareStatement("select * from public.example");
        ResultSet res = stmt.executeQuery();
        while(res.next()){
            System.out.println(res.getString(1)+ " " + res.getString(2));}
}
}

但是,当我编写一个函数在Main类之外的另一个类中执行完全相同的操作时,我在Class.forName行上收到了java.lang.ClassNotFoundException。当然,接下来的每一行都有例外。

这是DBManager.java类:

public class DBManager {

    public DBManager(){
    }

    public void printExample(){
        Class.forName("org.postgresql.Driver");
        Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Benerator","postgres","newPassword");
        PreparedStatement stmt = con.prepareStatement("select * from public.example");
        ResultSet res = stmt.executeQuery();
        while(res.next()){
            System.out.println(res.getString(1)+ " " + res.getString(2));}
    }
}

我认为这是一个新手问题,但是我很难找到原因,有什么线索吗?

编辑:当我用Try / Catch包围代码时,一切正常

1 个答案:

答案 0 :(得分:0)

  1. 在Intellij中-转到文件-项目结构-库。如果您通过Intellij运行,请确保可以看到库jdbc
  2. 如果您通过直接的Java命令运行DBManager,请确保传递-cp参数,例如db. Model(previousModel). UpdateColumns(appUpdated). Model(&previousModel.Location). Updates(appUpdated.Location)