Sou novo aqui no forum... E estou com um problema com Array. Seria o seguinte :
Tenho essa classe DAO, que esta dentro do pacote Persistence que faz uma consulta no banco de dados :
public List<Cargos> selectTodos(){
List<Cargos> listCargos = new ArrayList<Cargos>();
Connection conn = FabricaDB.getInstance().getConnection();
String SQL = "SELECT * FROM CARGOS";
try {
PreparedStatement stmt = conn.prepareStatement(SQL);
boolean result = stmt.execute();
if (result == true) {
ResultSet rs = null;
rs = stmt.getResultSet();
while (rs.next()){
Cargos cargo = new Cargos();
cargo.setCodigo(rs.getInt("CODIGO"));
cargo.setcodProfissao(rs.getInt("COD_PROFISSAO"));
cargo.setDescricao(rs.getString("DESCRICAO"));
listCargos.add(cargo);
}
return listCargos;
}else {
System.out.println("SQL retornou False");
return null;
}
} catch (SQLException e) {
System.out.println("Erro na execução do SQL " + e.getMessage());
return null;
}
}
Tenho essa classe Cargos que esta dentro do pacote model que faz a chamada desse metodo :
public List<Cargos> selectTodos(){
CargosDAO crgDAO = new CargosDAO();
List<Cargos> cargos = crgDAO.selectTodos();
return cargos;
}
Tenho essa classe CargosCNTR que esta dentro do pacote controler que faz a chamada do metodo da classe model e passa ela para um List de Strings
public class CargosCNTR {
public List<String[]> SelectTODOS(){
Cargos crg = new Cargos();
List<Cargos> listaCargos = crg.selectTodos();
List<String[]> vetlistaCargos = new ArrayList<String[]>();
String[] vBuffer = new String[3];
for (int i = 0; i < listaCargos.size(); i++){
vBuffer[0] = String.valueOf(listaCargos.get(i).getCodigo());
vBuffer[1] = String.valueOf(listaCargos.get(i).getcodProfissao());
vBuffer[2] = listaCargos.get(i).getDescricao();
vetlistaCargos.add(vBuffer);
}
return vetlistaCargos;
};
Bom… Seria assim : O Model solicita o DAO, que faz a consulta no banco de dados e passa para ele, o controller pega esses dados do model, e passa para um Array de Strings. Bom o problema e que quando vou chamar esse controler na view dessa forma
public static void main(String[] args) {
int i;
CargosCNTR crgCNTR = new CargosCNTR();
crgCNTR.SelectTODOS();
List<String[]> listCargos = crgCNTR.SelectTODOS();
System.out.println(listCargos);
}
}
O retorno que sai no console sai assim : [[Ljava.lang.String;@14a8cd1], Todo o codigo esta funcionando, mais acredito que deva ser algum problema de formatacao. Mais nao estou conseguindo enxergar onde possa ser… Alguem se habilita em me ajudar ? Aproveito para perguntar, o que dizem do metodo de busca e da separacao das classes !!! Agradeço antecipadamente…
Copiei de local nenhum nao, escrevi client errado no final do codigo mesmo…Na verdade fui vendo alguns exemplos…e acabei chegando nisso ae… Por isso gostaria de saber se a forma indicada de fazer seria dessa forma mesmo !!!
[quote=felipehand]hummm sei… vc fez tudo isso, usando DAO e etc. E no Sysout vc poe a list pra imprimir invez dos itens dela…
legal[/quote]
O que o colega aqui quer dizer é que vc tá mandando o objeto direto pro SysOut
E pelo menos em teoria alguém que conhece realmente java, já saberia que isso vai printar a referencia do objeto
Então eu estou assumindo que ele assumiu que vc não sabe muita coisa então explico-lhe:
public static void main(String[] args) {
int i;
CargosCNTR crgCNTR = new CargosCNTR();
crgCNTR.SelectTODOS();
List<String[]> listCargos = crgCNTR.SelectTODOS();
System.out.println(listCargos); ----------------------------- Aqui use um for each pois é uma coleção, e o .toString dela vai apontar a referência e não o conteudo.
}
[quote=felipehand]hummm sei… vc fez tudo isso, usando DAO e etc. E no Sysout vc poe a list pra imprimir invez dos itens dela…
legal[/quote]
Pow, Felipe de boa cara… se voce acha que nao… tudo bem… hehehe…(O jeito de falar e apenas uma bricadeira, em cara, mais fiz sim realmente o codigo…)
Cargos crg = new Cargos();
List<Cargos> listaCargos = crg.selectTodos();
for (int i = 0; i < listaCargos.size(); i++){
System.out.print(listaCargos.get(i).getCodigo() + " ");
System.out.print(String.valueOf(listaCargos.get(i).getcodProfissao()) + " ");
System.out.print(String.valueOf(listaCargos.get(i).getDescricao()) + " " );
System.out.println();
}
}
enantiomero,
Seguinte cara, eu queria uma saida dessa forma sacou… so que nesse caso estou chamando o model direto de dentro da view e nao seria o correto, pois pelo que entendi a view so enxerga o controler… e quando chamo pela controller nao da certo… dessa forma o que me diz ?
[quote=guerios][quote=felipehand]hummm sei… vc fez tudo isso, usando DAO e etc. E no Sysout vc poe a list pra imprimir invez dos itens dela…
legal[/quote]
O que o colega aqui quer dizer é que vc tá mandando o objeto direto pro SysOut
E pelo menos em teoria alguém que conhece realmente java, já saberia que isso vai printar a referencia do objeto
Então eu estou assumindo que ele assumiu que vc não sabe muita coisa então explico-lhe:
public static void main(String[] args) {
int i;
CargosCNTR crgCNTR = new CargosCNTR();
crgCNTR.SelectTODOS();
List<String[]> listCargos = crgCNTR.SelectTODOS();
System.out.println(listCargos); ----------------------------- Aqui use um for each pois é uma coleção, e o .toString dela vai apontar a referência e não o conteudo.
} [/quote]
Eu entendi o que o amigo felipe quiz dizer rsrs… Algo tao simples para quem fez todo aquele codigo, parece realmente estranho…mais e que ja estou estudando os outros codigos a um tempo, e vi um exemplo na net com essa saida desse jeito, e nao estava conseguindo usar… ae resolvi perguntar !!!