Comando sql

14 respostas
Jrmanzini

pessoal preciso procurar em uma tabela chamada professor o código dele e quero fazer essa busca através do seu nome:

String nome;
        nome= comboProf.getSelectedItem().toString();
        guarda_livros = new conexao();
        guarda_livros.conecta();
        guarda_livros.executeSQL("Select *from professor");
        guarda_livros.executeSQL("Select *from codProf Where nomeProf=nome);

como fica essa instrução?
valeu

14 Respostas

yorgan

Assim deve funcionar:

guarda_livros.executeSQL("SELECT codProf FROM professor WHERE nomeProf = '" + nome + "'"; );

Mas você pode dar uma olhada em preparedStatement também.

[]´s

Daniel

Marlon_Meneses

eu recomendo usar um like dependendo do tipo d busca
pq se usar = soh vai retornar se o nome for exatamente o que for passado como parametro

yorgan

Mas nesse caso ele está buscando um código, então acho que é melhor utilizar o = mesmo para não correr o risco de pegar um código errado.

Eu só não entendi o motivo de fazer tudo isso, afinal você pode pegar o código do professor diretamente do combo.
Para isso ao invés de passar uma lista de strings para o combo, passe uma lista de objetos Professor. Dessa forma o método comboProf.getSelectedItem() irá retornar um objeto Professor e com isso bastaria pegar o valor do código desse objeto.

[]´s

Daniel

Marlon_Meneses

ele está buscando um codigo a partir do nome do professor
"where nomeProf = nome"
seria melhor assim: where nomeProf like ‘%nome%’

yorgan

mas utilizando where nomeProf like ‘%nome%’ ele irá trazendo tanto o João como o João da Silva. E se olhar no código dele, o que ele quer é apenas um código. Por isso fiz o comentário anterior sobre a necessidade do comando SQL.

Fora que o nome no combo provavelmente é fixo, ou seja, não muda desde que veio da base, então ele não corre o risco de pegar o nome “errado”.

Marlon_Meneses

hum…
agora entendi!
e se tiver homônimos?!
rsrsrs
o ideal seria por código né?!

yorgan

Exatamente…por isso eu sugeri que ele armazenasse um objeto no combo ao invés da String. Assim ele pode recuperar esse objeto e dele pegar diretamente o código.
Da forma que está a chance de dar crepe é bem grande.

Jrmanzini

então, eu queria recuperar o objeto mas estou trabalhando sem persistencia e num banco relacional…

yorgan

Posta o código que está utilizando para preencher o combo.

Jrmanzini
public void encheCombo() throws SQLException {
        conecta = new conexao();String cod;
        conecta.conecta();
        conecta.executeSQL("select *from livros");
        comboLivroCad.removeAllItems();
        while (conecta.resultset.next()) {
             livros l = new livros(cod, nome);
            comboLivroCad.addItem(l);//coloca "lixo" no combo l->objeto livro
            comboLivroCad.addItem(l.MostrarNome());
            comboLivro.addItem(l.MostrarNome());
        }
        }

    }
yorgan

Teste assim:

Crie a classe Professor:

public class Professor {
	
	private Integer idProfessor;
	private String nmProfessor;
	
	public Professor() {
		
	}
	public Professor(Integer idProfessor, String nmProfessor) {
		this.idProfessor = idProfessor;
		this.nmProfessor = nmProfessor;
		
	}
	
	public Integer getIdProfessor() {
		return idProfessor;
	}
	public void setIdProfessor(Integer idProfessor) {
		this.idProfessor = idProfessor;
	}
	public String getNmProfessor() {
		return nmProfessor;
	}
	public void setNmProfessor(String nmProfessor) {
		this.nmProfessor = nmProfessor;
	}

}

Depois no seu método de preenchimento faça assim:

public void encheCombo() throws SQLException {  
     Professor p;
     conecta = new Conexao();
     conecta.conecta();  
     conecta.executeSQL("select * from livros");   //aqui não seria professor????
     comboLivroCad.removeAllItems();  
     while (conecta.resultset.next()) {  
         p = new Professor();
         p.setIdProfessor(conecta.resultset.getInt("codProf"));
         p.setNmProfessor(conecta.resultset.getString("nomeProf"));
         
         comboLivroCad.addItem(p); //não sei qual dos dois combos deve receber o professor
         comboLivro.addItem(p);  
     } 
     
 }

E para recuperar o codigo no método que você precisa você faz assim:

Professor prof = (Professor) comboProf.getSelectedItem();
           Integer codProfessor = prof.getIdProfessor();

Obs. Digitei tudo direto aqui, então talvez tenha algum erro, mas a idéia fica facil de pegar.

[]´s

Daniel

Jrmanzini

o Daniel, muito obrigado cara…vou testar daqui a pouco, valeu por dispensar seu tempo pra ensinar…
abrax

yorgan

Tranquilo. Estamos aqui para ajudar.
Se precisar de mais umas dicas pode passar o MSN ou Gtalk via mensagem privada. Acho que é fica mais fácil para tirar as dúvidas.

[]'s

Daniel

Axel_MacNamara

yorgan:
Tranquilo. Estamos aqui para ajudar.
Se precisar de mais umas dicas pode passar o MSN ou Gtalk via mensagem privada. Acho que é fica mais fácil para tirar as dúvidas.

[]'s

Daniel

Axel:
cara vejo vc ajudando muita gente aew po de mar uma dica to criando um sisteminhia em java usando o netbeas
o que eu quero e o seguinte colocar os registro dentro de uma Jtable certo igual ou DBgrid do delphi so que eu quero e mostra algumas coisas
campos que interção ao cliente tipo CPF Nome , enão cod id_bla …pode me ajudar cara lembrando que o titula das colunas não tem que ser igual oa nome do campo da tabela do banco ja imaginou aparecendo no Jtable cpf_cnpj

Criado 28 de maio de 2009
Ultima resposta 31 de mai. de 2009
Respostas 14
Participantes 4