JTextField -- Java e BD com PreparedStatement

4 respostas
butt-head

[ *Início da Edição* ]
[color=red] Veja o 5° post...[/color]
[ *Fim da Edição* ]

E ae galera, gostaria de saber como utiliza o PreparedStatement.
Eu já fiz uns testes iniciais:

import java.sql.*;

class InseriTabelaComPS
{

  public static void main (String args[])
  {
    try
    {
      String url = "jdbc:odbc:dataTesteJr";
      String usuario = "";
      String senha = "";
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection con;
      con = DriverManager.getConnection(url,usuario,senha);
      Statement st = con.createStatement();
      String x = "INSERT INTO tb_teste (cd_teste, nm_teste) VALUES (?,?)";

      //Criando o P.S. e atribuindo a linha SQL "x" com interrogação
      //no lugar dos valores
      PreparedStatement PS = null;
      PS = con.prepareStatement(x);
      //Atribuindo valores aos "?" da String X
      PS.setInt(1,50);
      PS.setString(2,"Guitarra Flying V");
      //Executando a atualização no BD do PS
      PS.executeUpdate();


      con.close();
    }
    catch(Exception e)
    {
      System.out.println("Erro: " + e.getMessage());
    }
  }
}

Mas o que estou tentando fazer agora com o PreparedStatement é exibir o resultado de uma pesquisa feita em um banco de dados. Esse banco possui 2 tabelas: tbcargos e tbfuncs.

Sou iniciante, fiz a parte gráfica, deu um trabalho, mas consegui:

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;

public class treinoPS extends Frame implements WindowListener
{
    public static void main(String[] args)
    {
        treinoPS f = new treinoPS();
        f.addWindowListener(f);

        //Defindo propriedades do form
        f.setTitle("Exemplo com labels");
        f.setSize(350,210);
        f.setLocation(320,200);
        f.setLayout(new BorderLayout());
        f.setBackground(Color.gray);
        f.setResizable(false);
        UIManager.put("Label.font", new Font("SansSerif", Font.BOLD, 12));
        //UIManager.put("TextField.font", new Font("SansSerif", Font.BOLD, 12));

        //Criando painel superior e seus componentes
        Panel ps = new Panel();
        JLabel lbNomePesquisa = new JLabel("Nome:");
        TextField tfNomePesquisa = new TextField("Digite um nome e clique em pesquisar",30);
        //--Definindo cor e localização dos componentes
        ps.setBackground(Color.lightGray);
        ps.add(lbNomePesquisa);
        ps.add(tfNomePesquisa);

        //Criando painel central e botão de pesquisar
        Panel pc = new Panel();
        Button btPesquisar = new Button("Pesquisar");
        //--Adiconando botão pesquisar e definindo cor
        pc.add(btPesquisar);
        pc.setBackground(Color.lightGray);

        //Criando painel inferior e seus respectivos componentes
        Panel pi = new Panel();
        JLabel lbNome = new JLabel("Nome:");
        JLabel lbSalario = new JLabel("Salário:");
        JLabel lbCargo = new JLabel("Cargo:");
        TextField tfNome = new TextField("Nome");
        TextField tfCargo = new TextField("Cargo");
        TextField tfSalario = new TextField("Salário");
        Button btAnterior = new Button("Anterior");
        Button btProximo = new Button("Próximo");
        //--Defindo gerenciador de layout, adicionando componentes, etc...
        pi.setLayout(new GridLayout(4,2));
        pi.setBackground(Color.lightGray);
        pi.add(lbNome); pi.add(tfNome);
        pi.add(lbSalario); pi.add(tfSalario);
        pi.add(lbCargo); pi.add(tfCargo);
        pi.add(btAnterior); pi.add(btProximo);

        //Adicionando ao form
        f.add(ps,BorderLayout.NORTH);
        f.add(pc,BorderLayout.CENTER);
        f.add(pi,BorderLayout.SOUTH);

        //Exibindo
        f.setVisible(true);
    }

    //Método para finalizar aplicação
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }

    public void windowOpened(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowClosed(WindowEvent e) {}

}

Usando um bd feito no access mesmo, tenho que criar uma conexão com o ODBC. Já crescentei uns dados nas duas tabelas (cargos e funcionários (relacionamento de 1 p/ muitos)). Até aqui td bem.

O problema: ao clicar no botão pesquisar, deverá ser efetuado o SELECT utilizando LIKE para preencher um recordset e PreparedStatement para fazer o SQL. Os botões Próximo e Anterior devem permitir a navegação pelo recordset.

Quem souber como se faz me da uma força ae, enquanto isso vou continuar pesquisando, falou. :wink:

4 Respostas

Jair_Rillo_Junior

Porque não usa JDBC?

E outra, o PreparedStatement irá fazer a busca, mas o resultado será armazenado dentro de uma ResultSet.

Olha no tutorial do GUJ que certamente irá te ajudar http://www.guj.com.br/java.tutorial.artigo.7.1.guj e também em http://www.guj.com.br/java.tutorial.artigo.115.1.guj

fabim

faltou às aulas de Java né?

butt-head

Haha… faltei bastante.

ManchesteR, não sei se entendi o que disse sobre utilizar JDBC, mas eu estou utilizando ele:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

O JDBC “conversa” com o ODBC que é o aplicativo do SO que “conversa” com o BD.

Mas ja li o material que me passou e vou tentar por em prática, apesar de ainda ter dúvidas, mas qq coisa posto aqui. Flw.

butt-head

[b]Ainda estou fazendo isso, mas gostaria de saber como se limpar um JTextField ao clicar sobre ele?

Utilizando o comando para botões não funciona:[/b]

if (e.getSource() == tfPesquisarNome){
            tfPesquisarNome.setText(""); //ou null
        }


Não quero um evento como: “qnd receber o focu= limpar”, pois esse campo de texto já
inicia com foco, gostaria que limpasse apenas qnd clicasse nele. Mas se alguém souber
o do foco, tb pode postar. Também poderia começar com o foco nele, mas o texto dele já selecionado, assim, ao digitar algo já apagaria. Falou.

Criado 21 de novembro de 2007
Ultima resposta 22 de nov. de 2007
Respostas 4
Participantes 3