Problema na consulta a tabela (JDBC)

Estou iniciando no estudo dee JDBC e banco de dados. Meu banco de dados tem 2 tabelas: clientes e endereco. A tabela cliente tem uma coluna código q é a chave primária, uma coluna nome q tem o nome do cliente e uma coluna endereco q tem um chave estrangeira para a tabela enderecos. Quando executo meu metodo para buscar cliente pro codigo obtenho um ResultSet q ao manipular tenho acesso ao doigo e nome, mas n às colunas de endereço. Gostaria de saber como faço pra manipular esses dados de endereço atravez do ResultSet gerado por um SELECT na tablea clientes. Vou botar o código do método de bsucaPorCodigo, de cara sei q n posso manipular os dados de enderecos, a pergunta eh como vaou fazer isso. Antecipadamente vlw pessoal.

	public Cliente buscarClientePorCodigo(long codigo) throws ClienteInexistenteException {
		Cliente retorno = null;
		
		try {
			Class.forName(JDBC_DRIVER);
			connection = DriverManager.getConnection(URL_BANCO_DE_DADOS, "postgresql", "postgre");
			
			Statement statement = connection.createStatement();
			ResultSet resultSet = statement.executeQuery("SELECT * FROM clientes WHERE codigo = " +codigo);

			if (resultSet.next()){
				String rua = resultSet.getString("rua");
				String numero = resultSet.getString("numero");
				String complemento = resultSet.getString("complemento");
				String bairro = resultSet.getString("bairro");
				String cep = resultSet.getString("cep");
				String referencia = resultSet.getString("referencia");
				Endereco endereco = new Endereco(rua, numero, complemento, bairro, cep, referencia);
				
				String telefone = resultSet.getString("telefone");
				String celular = resultSet.getString("celular");
				String email = resultSet.getString("email");
				Boolean disponibilidadeReceberEmail = resultSet.getBoolean("disponibilidade_para_receber_email");
				Contato contato = new Contato(telefone, celular, email, disponibilidadeReceberEmail);
				
				String nome = resultSet.getString("nome");
				Cliente cliente = new Cliente(nome, endereco, contato);
				
				connection.close();
				statement.close();
				resultSet.close();
				
				retorno = cliente;
			} else {
				throw new ClienteInexistenteException();
			}
		} catch (SQLException e) {
			e.printStackTrace();
			//TODO TRATAR EXCEÇÃO
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			//TODO TRATAR EXCEÇÃO
		}
		
		return retorno;
	}

Você tem que fazer um join no seu select:

Select c.nome,c.sobrenome,e.rua from clientes c, endereco e where c.codigo_endereco=e.codigo

Depois para retornar os dados das colunas faça assim:

String nome=resultset.getString(0); String sobrenome=resultset.getString(1); ...

[color=green] SELECT c., e. FROM clientes c, endereco e WHERE c.codigo = " +codigo “and c.endereco = e.chave”[/color]

String nome = resultSet.getString(“c.nome”);
String rua = resultSet.getString(“e.rua”);

//esses dois são só exemplos de como usar…, pois o C diz q é da tabela clientes, e o E da tabela endereço

Esse “c” e esse “e” seria algo análogo a uma variável???

É uma éspecie de apelido para as Tabelas Cliente e Endereço para SQL interpretar que são tabelas diferentes no momento do INNER JOIN , OUTER JOIN e etc … , outra possibilidade é identificar o nome da tabela.campo

Mais fácil escrever c e e do que clientes e endereços toda vez :smiley: