Tenho um método que recebe como parametro um codigo, fazendo a comparaçao desse codigo com o codigo cadastrado no banco
ele deveria trazer todos os outros campos, mas ele me ta dando um erro de SQL e acaba nao trazendo os meus campos o codigo eh o segunte
[code] //metodo que retorna o cliente selecionado atraves do codigo e joga para os campos
public Clientes getCliente(Integer codigo) {
try {
// Comando sql para a busca
String sqlBusca = “select ID_PESSOA,NOME,SOBRENOME,SENHA,ENDERECO,CPF,RG,CIDADE,ESTADO,DATA_NASC from pessoa where ID_PESSOA = ?”;
String sqlBuscaUsr = “select TIPO_USR from tipo_usuario where ID_TIPO_USUARIO = ?”;
// Verifica se o comando esta certo e prepara para a execução
PreparedStatement busca = Conecta.getInstance().prepareStatement(sqlBusca);
PreparedStatement buscaUsr = Conecta.getInstance().prepareStatement(sqlBuscaUsr);
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
buscaUsr.setInt(1,codigo);
// Executa comando de busca e armazena todo o resultado dentro do
// ResultSet rs
ResultSet rs = busca.executeQuery();
ResultSet rsUsr = buscaUsr.executeQuery();
// Cria um novo cliente para guardar os dados
Clientes clientes = new Clientes();
// Laço percorrendo o resultado que esta no rs(ResultSet)
while (rs.next()) {
// Armazenando os valores que estão no banco em uma variável do
clientes.setCodigo(rs.getInt("ID_PESSOA"));
clientes.setNome(rs.getString("NOME"));
clientes.setSobrenome(rs.getString("SOBRENOME"));
clientes.setSenha(rs.getString("SENHA"));
clientes.setEndereco(rs.getString("ENDERECO"));
clientes.setCpf(rs.getString("CPF"));
clientes.setRg(rs.getString("RG"));
clientes.setCidade(rs.getString("CIDADE"));
clientes.setEstado(rs.getString("ESTADO"));
clientes.setDatadenascimento(rs.getString("DATA_NASC"));
clientes.setTipo_usuario(rsUsr.getString("TIPO_USR"));
}
return clientes;
} catch (SQLException e) {
System.out.println("Não foi possível localizar o cliente ");
return null;
}
}[/code]
ele cai direto no catch.
eu executei esse meu sql no MYSql e funcinou perfeitamente mas no java to com esses problemas
desde já agradeço
// Comando sql para a busca
String sqlBusca = "select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where ID_PESSOA = ? and ID_TIPO_USUARIO = ?";
// Verifica se o comando esta certo e prepara para a execução
PreparedStatement busca = Conecta.getInstance().prepareStatement(sqlBusca);
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
// Executa comando de busca e armazena todo o resultado dentro do
ResultSet rs = busca.executeQuery();
e o erro que surge quando eu executo esse metodo é o seguinte
java.sql.SQLException: No value specified for parameter 2
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1674)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1622)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1332)
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
busca.setInt(2,codigo);
usando o mesmo parametro para os 2
depois usei 2 parametros diferentes
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
busca.setInt(2,codigoUsr);
e de qualquer um dos 2 modos ele me gerou outro erro que é o seguinte
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2715)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2746)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:2697)
cara nao to vendo o erro olho varias vezes e pra mim ta certo o codigo SQL joguei no MySql e funciono beleza
mass aqui sem chance
"select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where ID_PESSOA = ? and ID_TIPO_USUARIO = ?";
da pra dar uma melhoradinha, fazendo o join entre as duas tabelas e usando o alias P. e T. nas colunas de restrição que recebem os parametros:
"select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where P.ID_TIPO_USUARIO = T.ID_TIPO_USUARIO and P.ID_PESSOA = ? and T.ID_TIPO_USUARIO = ?";