Banco de Dados - Listar nomes

7 respostas
E

Bom galera, eu queria a ajuda de vocês p/ listar todos os elementos de um banco de dados meu.
O mais proximo que eu consegui chegar foi isso:

////////////////LISTA FUNCIONARIOS////////////// public void listaFuncionario(){ try { Statement stmt=conetarBanco().createStatement(); ResultSet rs = stmt.executeQuery("SELECT nome from" + "funcionario"); while(rs.next()){ System.out.println("nome: "+rs.getString(1)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int i=0;i<array.size();i++){ System.out.println(array.indexOf(i)); } }

Porém, não funcionou, até porque quando eu insiro os valores no Banco(METODO CADASTR()) eu utilizo o PreparedStatement

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Scanner;


public class Funcionario extends Pessoa {
	private String funcao;
	private double diaria,salarioFixo,valorHoraExtra,faltas,sabados,salarioFinal,vale;
	private  int contaFuncionario;
	private Connection conn;
	private PreparedStatement stm;
	private ArrayList<String> array = new ArrayList<String>();
	
	
	////////////////LISTA FUNCIONARIOS//////////////
	public void listaFuncionario(){
		try {
			Statement stmt=conetarBanco().createStatement();
			ResultSet rs = stmt.executeQuery("SELECT nome from" +
					"funcionario");
			while(rs.next()){
				System.out.println("nome: "+rs.getString(1));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(int i=0;i<array.size();i++){
			System.out.println(array.indexOf(i));		
	}
	}
	
	
	//METODO PARA CONECTAR AO BANCO DE DADOS//////
	public Connection conetarBanco(){
		  String driver = "com.mysql.jdbc.Driver";
          String user = "root";
          String pass = "root";
          String urlPadrao = "jdbc:mysql://localhost:3306/mysql";
         try{
          Class.forName(driver);
		   conn = DriverManager.getConnection(urlPadrao,user,pass);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
          System.out.println("Conexão estabelecida com sucesso");
          return conn;
	}
	
	////////////METODO CADASTRAR/////////////
	public void cadastro(){
		//criarObjeto();
		Scanner dado=new Scanner(System.in);
		Scanner dado2=new Scanner(System.in);
		System.out.println("Digite a função ");
		this.funcao=dado.next().toUpperCase();
		array.add(this.funcao);
		System.out.println();
		System.out.println("Digite o nome: ");
		setNome(dado.next());
		System.out.println();
		System.out.println("Digite o CPF");
		setCpf(dado.next());
		System.out.println("Digite a idade do funcionario");
		setIdade(dado.nextInt());
		System.out.println();
		System.out.println("Digite o endereço do funcionario");
		setEndereco(dado2.nextLine());	
		Funcionario f = new Funcionario();
		f.conetarBanco();
		//String query = "INSERT INTO funcionario (Funcao, nome, CPF, Endereco) values (?,?,?,?)";
		try {
			stm = conetarBanco().prepareStatement("INSERT INTO funcionario (Funcao, nome, CPF, Endereco) values (?,?,?,?)");
			stm.setString(1, getNome());
			stm.setString(2, getEndereco());
			stm.setString(3, funcao);
			stm.setString(4, getCpf());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		
	}
////////////////METODO ALTERAR CADASTRO///////////////////
	public void alterarCadastro(){
		Scanner dado=new Scanner(System.in);
		while(true){
			System.out.println("O QUE DESEJA ALTERAR? ");
			System.out.println();
			System.out.println("1- Função");
			System.out.println("2- Nome");
			System.out.println("3- CPF");
			System.out.println("4- Endereço");
			System.out.println("9- FIM!");
			char opcao;
			opcao=dado.next().charAt(0);
			if(opcao==9){
				break;
			}else{
			switch(opcao){
			case'1':
				Funcionario f= new Funcionario();
				f.conetarBanco();
				System.out.println("DIGITE A NOVA FUNÇÃO");
				this.funcao=dado.next();
				break;
			case '2':
				System.out.println("Digite  o nome");
				setNome(dado.next());
				break;
			case'3':
				System.out.println("Digite o CPF");
				setCpf(dado.next());
				break;
			case'4':
				System.out.println("Digite o endereço");
				setEndereco(dado.next());
			default:
				System.out.println("Opção inválida, tente novamente");
			}
			}
		}
	}
////////////METODO CALCULAR SALARIO///////////////////////////////	
	public void calculaSalario(){
		Scanner dado=new Scanner(System.in);
		if(funcao.equalsIgnoreCase("ESTAGIÁRIO")){
			this.salarioFixo=600;
			this.diaria=this.salarioFixo/30;
			System.out.println("Quantos sábados o Funcionario trabalhou?");
			this.sabados=dado.nextDouble();
			this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
			System.out.println(this.salarioFinal);
			
		}else if (funcao.equalsIgnoreCase("MOTORISTA")) {
			this.salarioFixo=1000;
			this.diaria=this.salarioFixo/30;
			System.out.println("Quantos sábados o Funcionario trabalhou?");
			this.sabados=dado.nextDouble();
			this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
			System.out.println(this.salarioFinal);
			
		}else if(funcao.equalsIgnoreCase("GERENTE")){
			this.salarioFixo=2500;
			this.diaria=this.salarioFixo/30;
			System.out.println("Quantos sábados o Funcionario trabalhou?");
			this.sabados=dado.nextDouble();
			this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
			System.out.println(this.salarioFinal);
		}
			
		}
	
///////////////IMPRIME INFORMAÇÕES DO FUNCIONARIO//////////
	public void imprimeInformacao(){
		System.out.println("Nome: "+getNome());
		System.out.println("CPF: "+getCpf());
		System.out.println("Endereço: "+getEndereco());
		System.out.println("Idade: "+getIdade());
	}
	
	
	
	
	public double getFaltas() {
		return faltas;
	}
	public void setFaltas(double faltas) {
		this.faltas = faltas;
	}
	public double getVale() {
		return vale;
	}
	public void setVale(double vale) {
		this.vale = vale;
	}
	public  Funcionario(String funcao){
		this.funcao=funcao;
	}	
	public Funcionario(){
		
	}
		

}

Coloquei o código todo pq eu realmente nao faço ideia de como fazer isso.
Valeu a ajuda galera

7 Respostas

Ivan_Alves

Você quer listar todos os nomes? ou todas as tabelas? ou todos os dados dessa tabela especifica?

Observação no seu código tem um linha com assim

ResultSet rs = stmt.executeQuery("SELECT nome from" + "funcionario");

Observe que ao colocar o nome da tabela ‘funcionario’ ela ficara concatenada com o ‘from’ que vem antes ou seja isso irá gerar um erro

lucasportela

Cara de uma estudada em OO e em design pattern MVC, sua classe de domínio possuí regras do banco e isso é horrível.

Ontem eu respondi algo que deve lhe servir:

Lembrando que você tem que separar a parte de persistência de dados da sua regra de negócio.

E

Quero listar todos os nomes da tabela funcionario

Ivan_Alves

Então o código SQL deve ficar assim

SELECT * from funcionario

Use o ResultSet para pegar os dados ou algum Framework para isso

T

Resumindo…

Statement stmt=conetarBanco().createStatement();  
        ResultSet rs = stmt.executeQuery("SELECT nome from " +      //<---   Atenção na concatenação. o seu código está resultando em "SELECT nome 
                "funcionario");                                                             //fromfuncionario"
        while(rs.next()){  
            System.out.println("nome: "+rs.getString(1));

:wink:

abraço

E

Ja separei a concatenação.
Eu me expressei errado, foi mal galera.
Na verdade eu quero todos os nomes pertencentes a coluna nome. Todos os nomes dos funcionários!

Ivan_Alves

O código acima do tiagosarj já faz isso que você quem só atenção para o nome do seu campo no banco de dados se for “nome” igual está acima vai rodar beleza senão você vai ter que alterar de acordo com seu banco.

flw!!

Criado 24 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 7
Participantes 4