Gravar campo a partir de uma combobox

7 respostas
A

Caro(a) colega,

Estou criando uma combobox no meu form para escollher uma operadora celular.

  • Criei a combobox com o nome de comboBoxOperadora. Até aí tudo bem, compilei e executei tdo funcionou telgal. Eu gostaria agora de saber como é que eu faço para incluir no meu banco de dados, a opçao escolhida nesta combobox. O meu código está abaixo: mas dá erro na instrução SQL para inclusão do registro.
    Não estou sabendo como fazer para incluir os dados da combobox.
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class Incluir extends JFrame{
	JButton botao;
	JLabel lnome, ltel1, ltel2, lcel, lope;
	JTextField tnome, ttel1, ttel2, tcel;
	JComboBox   comboBoxOperadora;
	String Operadoras[]= {"Telemig","Oi","Tim","Claro","Vivo","Outras"}; 
	
	public Incluir(){
		super("Inclusão de Registros...");
		Container tela = getContentPane();
		tela.setLayout(null);
		lnome = new JLabel("Nome");
		ltel1 = new JLabel("Telefone 1:");
		ltel2 = new JLabel("Telefone 2:");
		lcel  = new JLabel("Celular:");
		lope  = new JLabel("Operadora:");
		
		tnome = new JTextField(50);
		ttel1 = new JTextField(15);
		ttel2 = new JTextField(15);
		tcel  = new JTextField(15);
		comboBoxOperadora  = new JComboBox(Operadoras);
		botao = new JButton("Incluir Registro");
		
		lnome.setBounds(20, 30, 80, 20);
		ltel1.setBounds(20, 70, 80, 20);
		ltel2.setBounds(20,110, 80, 20);
		lcel.setBounds(20, 150, 80, 20);
		lope.setBounds(20, 190, 80, 20);
		
		tnome.setBounds(100, 30, 280, 20);
		ttel1.setBounds(100, 70, 100, 20);
		ttel2.setBounds(100,110, 100, 20);
		tcel.setBounds( 100,150, 100, 20);
		comboBoxOperadora.setBounds( 100,190, 100, 20);
		
		botao.setBounds(220, 190, 150, 20);
		
		tela.add(lnome);
		tela.add(ltel1);
		tela.add(ltel2);
		tela.add(lcel);
		tela.add(lope);
		
		tela.add(tnome);
		tela.add(ttel1);
		tela.add(ttel2);
		tela.add(tcel);
		tela.add(comboBoxOperadora);
		tela.add(botao);
			 
		botao.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				try{
		String url = "jdbc:odbc:Agenda";
		String usuario = "";
		String senha = "";

		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		Connection con;
		con= DriverManager.getConnection(url,usuario,senha);
		Statement st = con.createStatement();
		st.execute("INSERT INTO Cadastro(Nome, Telefone_1, Telefone_2, Celular, Operadora) VALUES('"+tnome.getText()+ "','"+ttel1.getText()+"', '"+ttel2.getText()+"', '"+tcel.getText()+"', '"+comboBoxOperadora.getText()+"')");
			tnome.setText("");
			ttel1.setText("");
			ttel2.setText("");
			tcel.setText("");
			
			tnome.requestFocus();
				JOptionPane.showMessageDialog(null,"Registro Inserido com sucesso!...", "Mensagem do Programa", JOptionPane.INFORMATION_MESSAGE);
				st.close();
				con.close();
				}
				catch(Exception event)
				{
					
				JOptionPane.showMessageDialog(null, "Conexão não estabelecida", "Mensagem do Programa", JOptionPane.ERROR_MESSAGE);
				}
			}});
			setSize(400,250);
			setVisible(true);
			setLocationRelativeTo(null);
			}
			public static void main (String args[]){
				Incluir app = new Incluir();
				app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				
				}
	}

7 Respostas

P

Olá, não lembro de a classe JComboBox implementar o metodo getText().

Tenta com o metodo getSelectedItem();

Altera o codigo para

Blz??

Testa ae, e se nao funfar posta novamente, ok??

flw.

A

Caro Phil,

Ótimo, isso mesmo deu certo e está funcionando legal. Lhe agradeço muito,

Agora quero tentar fazer isso, fazendo comque a minha combo ao invés de ter uma lista pronta para selecionar o dado, eu quero que esta combo busque os dados em uma tabela. Como é que eu faço isso?

Atenciosamente,

Edson Amorim.

P

Olá, você irá pegar este valor de uma tabela de banco de dados??

Bom, partindo do pressuposto que vc já tenha o devido valor vc pode adicioná-lo no combo da seguinte forma:

String nome = "Filipe"; combo.addItem(nome);

Onde nome é uma String com o valor = “Filipe” e em seguida adcionamos esta string ao combo.

Não sei se é o que vc procura, caso nao for posta novamente com mais detalhes, blz??

Até mais, Filipe.

A

Prezado Filipe,

Mais uma vez, obrigado pela atenção e ajuda. Realmente eu fiquei empolgado por esperar a ajuda e acabei não postando de forma mais clara a minha dúvida: é o seguinte: eu tenho uma tabela onde eu cadastro tipos de serviços de um cerimonial por exemplo, ou seja: a tabela tem um único campo chamado “serviço” do tipo txt de tamanho 20 bytes.
Já tenho alguns serviços cadastrados nesta tabela que são entre eles:

  • musica popular
  • karaoke
  • teatrinho
  • bebidas
  • brindes
    etc.
    A medida que forem disponibilizados novos serviços, estes vão sendo incluídos nesta tabela.
    No meu cadastro de clientes, eu gostaria de utilizar uma combobox para escolher o serviço ao inves da pessoa digitar cada serviço de uma maneira.
    Como é que eu faço para que a combo pegeue este campo da tabela serviço?

Atenciosamente,

Edson

P

Olá Edson, consegui entender melhor o que vc está tentando fazer, mas ainda estou com dúvida com relação a esta tabela que vc tem. Está tabela é de um banco de dados?? Caso a resposta foi sim vc pode fazer desta forma:

//declarar variaveis de conexão
query = "SELECT * FROM servico ORDER BY servico";

		try {
			ResultSet res = stm.executeQuery(query);
			while (res.next())
				combo.addItem(res.getString("servico"));
		} catch (SQLException e) {
			/** Não está conseguindo se conectar ao banco */		
		}

Se a tua tabela esta em um banco este é o procedimento para add os intens no combo.

blz cara, veja se é isso…

Até, Filipe.

A

Prezado Filipe,

Acho que voce acertou em cheio, é isso mesmo, eu tenho uma tabela no banco de dados onde incluo os serviços a medida que vão aparecendo novos serviços. Aí, quando for cadastrar um cliente, eu escolho este serviço na combo que por sua vez, pega este campo lá na tabela serviços. Vou tentar a implementação aqui na minha classe e volto aqui, nas dúvidas. É e primeira vez que vou fazer este tipo de coisa, não sei se vou conseguir esta implementação!!

Obrigado,

Edson

P

Blz cara, tenta fazer ae, caso der algum problema posta a duvida e se possivel o codigo onde esta ocorrendo o erro, certo???

Até mais, Filipe.

Criado 25 de maio de 2007
Ultima resposta 30 de mai. de 2007
Respostas 7
Participantes 2