2015-06-21 2 views
2

Я запускаю Netbeans 8.0.2. Я узнал о JDBC и хотел подключить его к базе данных PostgreSQL. Я искал все возможные ответы, но ни один ответ не заставил его работать.Как решить проблему «Не найдено подходящего драйвера»

Я также выбрал библиотеку на левой стороне меню, как PostgreSQL JDBC Driver -postgresql-9.2-1002.jdbc4.jar

приведенная ошибка:

SQL exception occuredjava.sql.SQLException: No suitable driver found for 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); 
    } 
+0

Интересно, если 'JDBC:' чувствительно к регистру. (Я предполагаю, что это не проблема, но попробуйте ...) – immibis

+0

Да, это сработало! – Gautam

ответ

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(); 
    } 

} 

The DriverManager просит каждый водитель, который зарегистрирован на него, если он может читать URL: "JDBC: PostgreSQL: // Localhost: 5432/Postgres".
Используется первый драйвер, который возвращает true.
В вашем случае драйвер не вернется.
Метод водителя, который возвращает истину или ложь является acceptsURL("jdbc:postgresql://localhost:5432/postgres")

Вы можете проверить это с:

try { 
     Enumeration<Driver> drivers = DriverManager.getDrivers(); 
     while (drivers.hasMoreElements()) { 
      Driver nextElement = drivers.nextElement(); 
      JOptionPane.showMessageDialog(null, nextElement.acceptsURL("jdbc:postgresql://localhost:5432/postgres")); 
      JOptionPane.showMessageDialog(null, nextElement.acceptsURL("Jdbc:postgresql://localhost:5432/postgres")); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
+0

Спасибо. Я просто преобразовал Jdbc в маленький футляр, и он сработал! – Gautam

Смежные вопросы