Hey, guys,
So I have a question in my college work,
I have two tables one USER and USER_AMIGO both related, by java I'm looking for a user list that brings all users registered, and another list that brings a friend to a certain user, so I can not bring those values.
My code ListAll and FriendFriends
public List<Usuario> buscarAmigos(int cdUsuario){
String sql = "SELECT USUARIO_CD_USUARIO FROM USUARIO_AMIGO "
+ "INNER JOIN USUARIO "
+ "ON USUARIO_AMIGO.USUARIO_CD_USUARIO = USUARIO.CD_USUARIO "
+ "AND USUARIO_AMIGO.USUARIO_CD_USUARIO = ?";
List<Usuario> amigos = new ArrayList<Usuario>();
try {
PreparedStatement st = conn.prepareStatement(sql);
st.setInt(1, cdUsuario);
ResultSet resultado = st.executeQuery();
while(resultado.next()){
Usuario usuario = new Usuario();
usuario.setCdUsuario(resultado.getInt("CD_USUARIO"));
usuario.setDataNasc(resultado.getString("DT_NASCIMENTO"));
usuario.setFoto(resultado.getString("FOTO_USUARIO"));
usuario.setLocalizacao(resultado.getString("NM_LOCALIZAO"));
usuario.setNome(resultado.getString("NM_NOME"));
usuario.setSobrenome(resultado.getString("NM_SOBRENOME"));
usuario.setEmail(resultado.getString("EMAIL_USUARIO"));
usuario.setNmUsuario(resultado.getString("NM_USUARIO"));
usuario.setSexo(resultado.getString("TP_SEXO").charAt(0));
amigos.add(usuario);
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e);
}
return amigos;
}
public List<Usuario> buscarTodos(){
String sql = "SELECT * FROM USUARIO";
List<Usuario> lista = new ArrayList<Usuario>();
try {
PreparedStatement st = conn.prepareStatement(sql);
ResultSet resultado = st.executeQuery();
while(resultado.next()){
Usuario usuario = new Usuario();
usuario.setCdUsuario(resultado.getInt("CD_USUARIO"));
usuario.setDataNasc(resultado.getString("DT_NASCIMENTO"));
usuario.setFoto(resultado.getString("FOTO_USUARIO"));
usuario.setLocalizacao(resultado.getString("NM_LOCALIZACAO"));
usuario.setNome(resultado.getString("NM_NOME"));
usuario.setSobrenome(resultado.getString("NM_SOBRENOME"));
usuario.setEmail(resultado.getString("EMAIL_USUARIO"));
usuario.setNmUsuario(resultado.getString("NM_USUARIO"));
usuario.setSexo(resultado.getString("TP_SEXO").charAt(0));
//usuario.setAmigos(this.buscarAmigos(usuario.getCdUsuario()));
usuario.setAmigos(this.buscarAmigos(resultado.getInt("CD_USUARIO")));
lista.add(usuario);
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e);
}
return lista;
}
Test class
// GET AMIGOS
try {
UsuarioDao dao = new UsuarioDao();
List<Usuario> listaAmigos = dao.buscarAmigos(1);
System.out.println("Amigos do usuario:");
for (Usuario u : listaAmigos){
System.out.println(u.getCdUsuario() + " - " + u.getNome() + " " + u.getSobrenome());;
}
} catch (Exception e) {
System.out.println(e);
}
// GET USUARIOS
try {
UsuarioDao dao = new UsuarioDao();
List<Usuario> listaUsuario = dao.buscarTodos();
System.out.println("Lista de usuario:");
for (Usuario u : listaUsuario){
System.out.println(u.getCdUsuario() + " - " + u.getNome() + " " + u.getSobrenome());
}
} catch (Exception e) {
System.out.println(e);
}
The error that returns me
java.sql.SQLException: Nome de coluna inválido
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3724)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2799)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:438)
at br.com.younews.dao.UsuarioDao.buscarAmigos(UsuarioDao.java:94)
at br.com.younews.dao.UsuarioDao.buscarTodos(UsuarioDao.java:131)
at br.com.younews.teste.TesteUsuarioDao.main(TesteUsuarioDao.java:67)
My table