PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O infame java.sql.SQLException:Nenhum driver adequado encontrado


O infame java.sql.SQLException:Nenhum driver adequado encontrado

Essa exceção pode ter basicamente dois causas:

#1. O driver JDBC não está carregado

Você precisa garantir que o driver JDBC seja colocado no próprio servidor /lib pasta.



Ou, quando você não está realmente usando uma fonte de dados de pool de conexões gerenciada pelo servidor, mas está mexendo manualmente com DriverManager#getConnection() no WAR, então você precisa colocar o driver JDBC no arquivo /WEB-INF/lib do WAR e realizar..
Class.forName("com.example.jdbc.Driver");

.. em seu código antes o primeiro DriverManager#getConnection() chamada pela qual você se certifica de que não engolir/ignorar qualquer ClassNotFoundException que pode ser lançado por ele e continuar o fluxo de código como se nada de excepcional tivesse acontecido. Consulte também Onde devo colocar o driver JDBC para o pool de conexões do Tomcat?

#2. Ou, a URL JDBC está na sintaxe errada

Você precisa garantir que a URL JDBC esteja em conformidade com a documentação do driver JDBC e lembre-se de que geralmente diferencia maiúsculas de minúsculas. Quando a URL JDBC não retorna true para Driver#acceptsURL() para qualquer um dos drivers carregados, você também obterá exatamente essa exceção.

No caso do PostgreSQL está documentado aqui.

Com JDBC, um banco de dados é representado por uma URL (Uniform Resource Locator). Com o PostgreSQL™, isso assume uma das seguintes formas:
  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

No caso de MySQL está documentado aqui.

O formato geral para uma URL JDBC para conexão com um servidor MySQL é o seguinte, com itens entre colchetes ([ ] ) sendo opcional:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

No caso do Oracle está documentado aqui.

Existem 2 sintaxes de URL, sintaxe antiga que funcionará apenas com SID e a nova com o nome do serviço Oracle.

Sintaxe antiga jdbc:oracle:thin:@[HOST][:PORT]:SID

Nova sintaxe jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

###Veja também:
  • Onde devo colocar o driver JDBC para o pool de conexões do Tomcat?
  • Como instalar o driver JDBC no projeto da web Eclipse sem enfrentar java.lang.ClassNotFoundexception
  • Como devo me conectar ao banco de dados / fonte de dados JDBC em um aplicativo baseado em servlet?
  • Qual ​​é a diferença entre "Class.forName()" e "Class.forName().newInstance()"?
  • Conectar Java a um banco de dados MySQL