The method in the type Conexao is not applicable for the arguments (null)

E ae galera, to fazendo um programa para cadastramento e listagem de contatos no banco de dados em jsp, a parte de cadastramento ta funcionando, mais a de listagem de contatos ta dando esse erro aqui: The method getConnection(int) in the type Conexao is not applicable for the arguments (null).

aqui a classe:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%@page import="JDBC.*"%>
<%@page import= "java.sql.Connection"%>
<%@page import= "java.sql.PreparedStatement"%>
<%@page import= "java.sql.ResultSet"%>
<%@page import= "java.sql.DriverManager"%>
<%@page import= "java.sql.SQLException" %>

<%
		   Connection connection; 
           connection = Conexao.getConnection(null);
           Contato c1 = (Contato) request.getAttribute("ContatoBean");
           ContatoDAO cd = new ContatoDAO();
           String sql = "SELECT * FROM contato ORDER BY codigo";
		   PreparedStatement preparedStatement = connection.prepareStatement(sql);				
		   ResultSet rs = preparedStatement.executeQuery();
%>
<table border="1">

        <tr>
              <th>ID</th>
              <th>Nome</th>
              <th>Telefone</th>
              <th>Email</th>
              <th>Endereco</th>
        </tr>
        <%
              while(rs.next()){
        %>
        <tr>
               <td align="left"><%=rs.getString("codigo") %></td>
               <td align="left"><%=rs.getString("nome") %></td>
               <td align="left"><%=rs.getString("telefone") %></td>
               <td align="left"><%=rs.getString("email") %></td>
               <td align="left"><%=rs.getString("endereco") %></td>
               
        <%
              }
        %>
        </tr>
</table>
</body>
</html>

Classe Conexao

package JDBC;


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

public class Conexao {
	public static Connection getConnection(int x){
		String url = "";
		Connection con = null;
		
		try{
			switch(x){
			case 1://postgre
				Class.forName("org.postgresql.Driver");
				url = "jdbc:postgresql://192.168.16.18:5432/crm216";
				con = DriverManager.getConnection(url, "postgres", "postgre");
				System.out.println("Driver de Conexão ao Postgre");
				break;
			case 2://sqlserver
				Class.forName("net.sourceforge.jtds.jdbc.Driver");
				url = "jdbc:jtds:sqlserver://localhost/TPW";
				con = DriverManager.getConnection(url, "sa", "1234");
				System.out.println("Driver de Conexão ao SQL Server");
				break;
			}
		}catch(ClassNotFoundException cnfe){
			System.out.println("Driver não encontrado.");
			System.out.println(cnfe.getMessage());
		}catch(SQLException e){
			System.out.println("Não foi possível obter uma conexão.");
			System.out.println(e.getMessage());
		}
		//retorna o driver e a string de conexão com o banco escolhido
		return con;
	}
}

é simples, você está tentando passar null para um tipo primitivo.

Isso não compila:

Isso compila:

Mudei la de Int X para Integer X como você disse, o erro desapareceu na classe, mais depois que compila da o mesmo erro.
[color=red]
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 19 in the jsp file: /projeto_listaContatos.jsp
The method getConnection(int) in the type Conexao is not applicable for the arguments (null)
16:
17: <%
18: Connection connection;
19: connection = Conexao.getConnection(null);[/color]

Troque na JSP para passar 1 ou 2 ao invés de null. Simples.

O maior problema é que passando null, a sua Connection vai ficar null e sua JSP vai lançar uma NullPointerException.

Muito Obrigado cara, depois de fazer o que você disse acima, funcionou :slight_smile: