grande galera do Guj… tudo tranquilo?
to com a duvido no seguinte metodo
public void getContatoPorId(Contato contato) throws SQLException{
PreparedStatement stmt = this.connection.prepareStatement("Select nome, email from Contatos where id = ?");//query ok
ResultSet rs = stmt.executeQuery();
stmt.setInt(1, contato.getId());
while(rs.next()){
rs.getString("nome" + ": " + rs.getString("endereco"));
}
rs.close();
stmt.close();
}
eu to passando um contato(um id de um contato) pra pegar seu nome e email
só que quando eu defino
public static void main(String[] args) throws SQLException {
ContatoDao dao = new ContatoDao();
Contato contato = new Contato();
contato.setId(20);
System.out.println(contato.getId());
dao.getContatoPorId(contato);
}
ele lança o seguinte erro
Connectado
20
Exception in thread "main" java.sql.SQLException: No value specified for parameter 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2513)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2489)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2415)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2169)
at br.com.BandaIADE.jdbc.dao.ContatoDao.getContatoPorId(ContatoDao.java:71)
at br.com.BandaIADE.jdbc.JDBCTestaProcuraDAO.main(JDBCTestaProcuraDAO.java:14)
com.mysql.jdbc.JDBC4PreparedStatement@18fef3d: Select nome, email from Contatos where id = ** NOT SPECIFIED **
[code]Connectado
20
Exception in thread “main” java.sql.SQLException: Column ‘endereco’ not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1144)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5549)
at br.com.BandaIADE.jdbc.dao.ContatoDao.getContatoPorId(ContatoDao.java:74)
at br.com.BandaIADE.jdbc.JDBCTestaProcuraDAO.main(JDBCTestaProcuraDAO.java:14)
[/code]
beleza fui la e troquei o metodo…
public void getContatoPorId(Contato contato) throws SQLException{
PreparedStatement stmt = this.connection.prepareStatement("Select nome, endereco from Contatos where id = ?");//query ok
stmt.setInt(1, contato.getId());
ResultSet rs = stmt.executeQuery();
while(rs.next()){
rs.getString("nome");
rs.getString("endereco");
}
rs.close();
stmt.close();
}
ContatoDao dao = new ContatoDao();
Contato contato = new Contato();
contato.setId(20);
dao.getContatoPorId(contato);
System.out.println("Nome: " + contato.getNome());
System.out.println("Endereco: " + contato.getEndereco());
Connectado
20
Nome: null
Endereco: null
Esqueci de mostrar isso aqui xD
só que ele nao esta amostrando nem o nome nem o endereço
nao entendi :oops:
public void getContatoPorId(Contato contato) throws SQLException{
PreparedStatement stmt = this.connection.prepareStatement("Select nome, endereco from Contatos where id = ?");//query ok
stmt.setInt(1, contato.getId());
ResultSet rs = stmt.executeQuery();// o ResultSet TEM que vir depois do stmt.setInt.. pra ele poder passar o id
while(rs.next()){
contato.setNome((rs.getString("nome")));
contato.setEndereco(rs.getString("endereco"));
}
rs.close();
stmt.close();
}[/code]
[code]Connectado
Nome: Max
Endereõ: Rua Vassouras 585
xD
brigadao ai
alias… existe um jeito mais simples e bonito de fazer isso?