1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java Problem] Inserir Dados em BD Access

Discussão em 'Programação' iniciada por Rúben T., 4 de Janeiro de 2009. (Respostas: 8; Visualizações: 2577)

  1. Rúben T.

    Rúben T. Power Member

    Boas, estou com um problema numa linha de código para a agenda que estou a fazer, vou deixar aqui o código:

    Código:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    public class Agendav13 extends JFrame{
    JButton botao, botao2;
    JLabel l1,l2,l3,l4,l5,l6,l7,l8;
    JTextField t1,t2,t3,t4,t5,t6,t7,t8;
    String result;
    int num;
    public Agendav13(){
    super("Agenda v13");
    Container tela = getContentPane();
    tela.setLayout(null);
    l1 = new JLabel("Código: "); t1 = new JTextField(5);
    l2 = new JLabel("Nome: "); t2 = new JTextField(50);
    l3 = new JLabel("Morada: "); t3 = new JTextField(70);
    l4 = new JLabel("Código Postal: "); t4 = new JTextField(20);
    l5 = new JLabel("E-Mail: "); t5 = new JTextField(30);
    l6 = new JLabel("Telefone: "); t6 = new JTextField(20);
    l7 = new JLabel("Telemóvel: "); t7 = new JTextField(20);
    l8 = new JLabel("Data de Nascimento: "); t8 = new JTextField(20);
    
    l1.setBounds(20,30,80,20); t1.setBounds(150,30,200,20);
    l2.setBounds(20,70,80,20); t2.setBounds(150,70,200,20);
    l3.setBounds(20,110,80,20);t3.setBounds(150,110,200,20);
    l4.setBounds(20,150,150,20);t4.setBounds(150,150,200,20);
    l5.setBounds(20,190,80,20);t5.setBounds(150,190,200,20);
    l6.setBounds(20,230,170,20);t6.setBounds(150,230,200,20);
    l7.setBounds(20,270,80,20);t7.setBounds(150,270,200,20);
    l8.setBounds(20,310,160,20);t8.setBounds(150,310,200,20);
    botao = new JButton("Consultar Registo"); botao.setBounds(20,400,150,20);
    botao2 = new JButton("Apagar Registo"); botao2.setBounds(180,400,150,20);
    botao3 = new JButton("Inserir Registo"); botao3.setBounds(340,400,150,20);
    tela.add(l1);tela.add(t1);
    tela.add(l2);tela.add(t2);
    tela.add(l3);tela.add(t3);
    tela.add(l4);tela.add(t4);
    tela.add(l5);tela.add(t5);
    tela.add(l6);tela.add(t6);
    tela.add(l7);tela.add(t7);
    tela.add(l8);tela.add(t8);
    tela.add(botao);tela.add(botao2);tela.add(botao3);
    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();
    ResultSet rs = st.executeQuery("SELECT * FROM agendadados WHERE Código="+t1.getText());
    rs.next();
    t2.setText(rs.getString("Nome"));
    t3.setText(rs.getString("Morada"));
    t4.setText(rs.getString("Código Postal"));
    t5.setText(rs.getString("E-Mail"));
    t6.setText(rs.getString("Telefone"));
    t7.setText(rs.getString("Telemóvel"));
    t8.setText(rs.getString("Data de Nascimento"));
    st.close();
    con.close();
    }
    catch(Exception event)
    {
    JOptionPane.showMessageDialog(null,"Erro de Conexão \nA pessoa não foi encontrada","Mensagem da Agenda v13",JOptionPane.ERROR_MESSAGE);
    }
    }});
    botao2.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.executeUpdate("DELETE FROM agendadados WHERE Código="+t1.getText());
    JOptionPane.showMessageDialog(null,"Registo apagado com sucesso","Mensagem da Agenda v13",JOptionPane.INFORMATION_MESSAGE);
    t1.setText(""); t2.setText(""); t3.setText(""); t4.setText(""); t5.setText("");t6.setText("");t7.setText("");t8.setText("");
    t1.requestFocus();
    st.close();
    con.close();
    }
    catch(Exception event)
    {
    JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nA pessoa não foi encontrada","Mensagem da Agenda v13",JOptionPane.ERROR_MESSAGE);
    }
    }});
    botao3.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.executeUpdate(INSERT INTO agendadados (Nome, Morada, Código Postal, E-Mail, Telefone, Telemóvel, Data de Nascimento) VALUES ("+Nome.getText()+","+Morada.getText()+","+Código Postal.getText()+","+E-Mail.getText()+", "+Telefone.getText()+", "+Telemóvel.getText()+", "+Data de Nascimento.getText()+")");
    Nome.setText("");
    Morada.setText("");
    Código Postal.setText("");
    Telefone.setText("");
    Telemóvel.setText("");
    Data de Nascimento.setText("");
    Nome.requestFocus();
    JOptionPane.showMessageDialog(null,"Registo inserido com Sucesso","Mensagem da Agenda v13",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 (600, 600);
    setVisible(true);
    setLocationRelativeTo(null);
    }
    public static void main(String args[]){
    Agendav13 app = new Agendav13();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
    st.executeUpdate(INSERT INTO agendadados (Nome, Morada, Código Postal, E-Mail, Telefone, Telemóvel, Data de Nascimento) VALUES ("+Nome.getText()+","+Morada.getText()+","+Código Postal.getText()+","+E-Mail.getText()+", "+Telefone.getText()+", "+Telemóvel.getText()+", "+Data de Nascimento.getText()+")");

    Nesta linha, dá-me os seguintes erros:

    "4 errors found:
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 103]
    Error: ')' expected
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 103]
    Error: unclosed string literal
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav132.java [line: 103]
    Error: ')' expected
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav132.java [line: 103]
    Error: unclosed string literal"

    Alguma ajuda ? :S
     
  2. IComeFromBehind

    IComeFromBehind Power Member

    O executeUpdate recebe uma String. Falta um " no antes do "INSERT"
     
  3. Rúben T.

    Rúben T. Power Member


    Já está, obrigado ;)

    Mas agora dá-me erro aqui:

    Código:
    Nome.setText("");
    Morada.setText("");
    CódigoPostal.setText("");
    Telefone.setText("");
    Telemóvel.setText("");
    DatadeNascimento.setText("");
    Nome.requestFocus();
    erro:

    "File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 104]
    Error: cannot find symbol
    symbol : method setText(java.lang.String)
    location: class java.lang.String
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 105]
    Error: cannot find symbol
    symbol : method setText(java.lang.String)
    location: class java.lang.String
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 106]
    Error: cannot find symbol
    symbol : method setText(java.lang.String)
    location: class java.lang.String
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 107]
    Error: int cannot be dereferenced
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 108]
    Error: int cannot be dereferenced
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 109]
    Error: int cannot be dereferenced
    File: C:\Users\Ruben Rodrigues\Documents\My Games\Agendav13.java [line: 110]
    Error: cannot find symbol
    symbol : method requestFocus()
    location: class java.lang.String"

    :S
     
  4. nsilvio

    nsilvio Power Member

    Para alem das referidas aspas, suponho que alguns dos campos são do tipo string, certo?
    Se o tipo de dados na base de dados forem do tipo string, necessitas de construir a expressão colocando plicas nos valores do tipo string.

    Ou seja, supondo que Nome, Morada, E-Mail são strings, tens de colocar a plica '
    Código:
    st.executeUpdate(INSERT INTO agendadados (Nome, Morada, Código Postal, E-Mail, Telefone, Telemóvel, Data de Nascimento) VALUES ('"+Nome.getText()+"','"+Morada.getText()+"',"+Códi go Postal.getText()+",'"+E-Mail.getText()+"', "+Telefone.getText()+", "+Telemóvel.getText()+", "+Data de Nascimento.getText()+")");
    Ou então, utilizar um PreparedStatement. O PreparedStatement simplifica a construção da expressão a executar na BD, para além de aumentar a performance!
    Poderá ser algo do genero:
    Código:
    PreparedStatement ps = new PreparedStatement("INSERT INTO agendadados (Nome, Morada, Código Postal, E-Mail, Telefone, Telemóvel, Data de Nascimento) VALUES (?,?,?,?,?,?,?,));
    ps.setString(1,Nome.getText());
    ps.setString(2,Morada.getText());
    ps......
    ......
    
     
  5. Rúben T.

    Rúben T. Power Member

    Voltou-me a dar alguns erros :S

    Podes-me adicionar no MSN e dar uma ajudinha ? ficava muito agradecido :S

    vê a pm que te mandei.

    Cumprimentos ;)
     
  6. Rúben T.

    Rúben T. Power Member

    Boas, estou de novo com problemas.

    Já consigo consultar e apagar dados, agora não consigo inserir, dá-me erro "Conexão não estabelecida".

    o código é este:

    Código:
    package agendav13;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    
    public class Agendav13 extends JFrame {
    
        JButton botao, botao2, botao3;
        JLabel l1, l2, l3, l4, l5, l6, l7, l8;
        JTextField codeField, nameField, addressField, postalCodeField, emailField, phoneField, mobileField, bornField;
        String result, Nome, Morada, CodigoPostal, EMail;
        int num, Telefone, Telemovel, DatadeNascimento;
    
        public Agendav13() {
            super("Agenda v13");
    
            try {
    
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            } catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null, "Could not load database driver");
            }
    
    
            Container tela = getContentPane();
            tela.setLayout(null);
            l1 = new JLabel("Código: ");
            codeField = new JTextField(5);
            l2 = new JLabel("Nome: ");
            nameField = new JTextField(50);
            l3 = new JLabel("Morada: ");
            addressField = new JTextField(70);
            l4 = new JLabel("Código Postal: ");
            postalCodeField = new JTextField(20);
            l5 = new JLabel("E-Mail: ");
            emailField = new JTextField(30);
            l6 = new JLabel("Telefone: ");
            phoneField = new JTextField(20);
            l7 = new JLabel("Telemóvel: ");
            mobileField = new JTextField(20);
            l8 = new JLabel("Data de Nascimento: ");
            bornField = new JTextField(20);
    
            l1.setBounds(20, 30, 80, 20);
            codeField.setBounds(150, 30, 200, 20);
            l2.setBounds(20, 70, 80, 20);
            nameField.setBounds(150, 70, 200, 20);
            l3.setBounds(20, 110, 80, 20);
            addressField.setBounds(150, 110, 200, 20);
            l4.setBounds(20, 150, 150, 20);
            postalCodeField.setBounds(150, 150, 200, 20);
            l5.setBounds(20, 190, 80, 20);
            emailField.setBounds(150, 190, 200, 20);
            l6.setBounds(20, 230, 170, 20);
            phoneField.setBounds(150, 230, 200, 20);
            l7.setBounds(20, 270, 80, 20);
            mobileField.setBounds(150, 270, 200, 20);
            l8.setBounds(20, 310, 160, 20);
            bornField.setBounds(150, 310, 200, 20);
            botao = new JButton("Consultar Registo");
            botao.setBounds(20, 400, 150, 20);
            botao2 = new JButton("Apagar Registo");
            botao2.setBounds(180, 400, 150, 20);
            botao3 = new JButton("Inserir Registo");
            botao3.setBounds(340, 400, 150, 20);
            tela.add(l1);
            tela.add(codeField);
            tela.add(l2);
            tela.add(nameField);
            tela.add(l3);
            tela.add(addressField);
            tela.add(l4);
            tela.add(postalCodeField);
            tela.add(l5);
            tela.add(emailField);
            tela.add(l6);
            tela.add(phoneField);
            tela.add(l7);
            tela.add(mobileField);
            tela.add(l8);
            tela.add(bornField);
            tela.add(botao);
            tela.add(botao2);
            tela.add(botao3);
            botao.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    selectFromSchedule();
                }
            });
    
            botao2.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    deleteFromSchedule();
                }
            });
            botao3.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    insertIntoSchedule();
                }
            });
            setSize(600, 600);
            setVisible(true);
            setLocationRelativeTo(null);
        }
    
        private void selectFromSchedule() {
            Connection con = null;
            Statement st = null;
    
            try {
                con = DriverManager.getConnection("jdbc:odbc:agenda", "", "");
    
                st = con.createStatement();
    
                ResultSet rs = st.executeQuery("SELECT Nome, Morada, EMail, CodigoPostal, Telefone, Telemovel, DatadeNascimento FROM agendadados WHERE Codigo=" + codeField.getText());
                if (rs.next()) {
                    nameField.setText(rs.getString("Nome"));
                    addressField.setText(rs.getString("Morada"));
                    postalCodeField.setText(rs.getString("CodigoPostal"));
                    emailField.setText(rs.getString("EMail"));
                    phoneField.setText(rs.getString("Telefone"));
                    mobileField.setText(rs.getString("Telemovel"));
                    bornField.setText(rs.getString("DatadeNascimento"));
                } else {
                    JOptionPane.showMessageDialog(null, "Erro de Conexão \nA pessoa não foi encontrada", "Mensagem da Agenda v13", JOptionPane.ERROR_MESSAGE);
                }
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, "Erro de base de dados: \"" + ex.getMessage() + "\"", "Mensagem da Agenda v13", JOptionPane.ERROR_MESSAGE);
    
            } finally {
                try {
                    if (st != null) {
                        st.close();
                    }
                    if (con != null) {
                        con.close();
                    }
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "GENERAL ERROR");
                }
            }
        }
    
        private void insertIntoSchedule() {
            Connection con = null;
            PreparedStatement ps = null;
    
            try {
                con = DriverManager.getConnection("jdbc:odbc:agenda", "", "");
    
                ps = con.prepareStatement("INSERT INTO agendadados (Codigo, Nome, Morada, CodigoPostal, EMail, Telefone, Telemovel, DatadeNascimento) VALUES ('?','?','?','?','?','?','?','?')");
                ps.setString(1, codeField.getText());
                ps.setString(2, nameField.getText());
                ps.setString(3, addressField.getText());
                ps.setString(4, postalCodeField.getText());
                ps.setString(5, emailField.getText());
                ps.setString(6, phoneField.getText());
                ps.setString(7, mobileField.getText());
                ps.setString(8, bornField.getText());
    
                ps.executeUpdate();
    
                codeField.setText("");
                nameField.setText("");
                addressField.setText("");
                postalCodeField.setText("");
                phoneField.setText("");
                mobileField.setText("");
                bornField.setText("");
    
                codeField.requestFocus();
    
                JOptionPane.showMessageDialog(null, "Registo inserido com Sucesso", "Mensagem da Agenda v13", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception event) {
                JOptionPane.showMessageDialog(null, "Conexão não estabelecida", "Mensagem da Agenda v13", JOptionPane.ERROR_MESSAGE);
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                    if (con != null) {
                        con.close();
                    }
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "GENERAL ERROR");
                }
            }
        }
    
        private void deleteFromSchedule() {
            Connection con = null;
            PreparedStatement ps = null;
    
            Integer codigo = Integer.parseInt(codeField.getText());
    
            try {
                con = DriverManager.getConnection("jdbc:odbc:agenda", "", "");
    
                ps = con.prepareStatement("DELETE FROM agendadados WHERE Codigo=?");
                ps.setInt(1, codigo);
    
                ps.executeUpdate();
    
                JOptionPane.showMessageDialog(null, "Registo apagado com sucesso", "Mensagem da Agenda v13", JOptionPane.INFORMATION_MESSAGE);
                codeField.setText("");
                nameField.setText("");
                addressField.setText("");
                postalCodeField.setText("");
                emailField.setText("");
                phoneField.setText("");
                mobileField.setText("");
                bornField.setText("");
                codeField.requestFocus();
            } catch (Exception event) {
                JOptionPane.showMessageDialog(null, "Conexão não estabelecida \nA pessoa não foi encontrada", "Mensagem da Agenda v13", JOptionPane.ERROR_MESSAGE);
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                    }
                    if (con != null) {
                        con.close();
                    }
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "GENERAL ERROR");
                }
            }
        }
    
        public static void main(String args[]) {
            Agendav13 app = new Agendav13();
            app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }
    Alguma ajuda ? Já agora, alguém me ajuda a fazer o "alterar dados" ? :S
     
  7. Rúben T.

    Rúben T. Power Member

  8. nsilvio

    nsilvio Power Member

    Em relação ao insert, remove as plicas da expressão...
     
  9. Implemente o método estático int[] primes(int limit) da classe MathUtils, que devolve um array com todos os primos menores que um limite, passado como parâmetro. Considere a existência do método estático boolean isPrime(int n) da classe MathUtils, que indica se um número é primo. Note que o array devolvido deve ter o tamanho estritamente necessário para armazenar os primos encontrados.

    Tou com uma duvidas aki em fazer o primeiro metodo estatico

    O segundo ta aki posso mostrar:
    Código:
    public static boolean isPrime(int n ){
        int res;
     if( n==1 || n==2 )  
     res=n;
     else
       if( n%2 == 0 ) 
       res=-1;
       else { 
           int primo=3;
              boolean nPrimo=true;
             
     
        while( primo*primo<=n ) { 
    
          if( n%primo==0 ){ nPrimo=false; break; }
          else primo +=2;
        }
           if( nPrimo ) 
        res=primo;
           else 
        res=-1;      
       }
       return res;
       
    Agora nao sei como fazer aquele do limite alguem me pode ajudar?
    Agradecia obrigado!;
     
    Última edição pelo moderador: 12 de Janeiro de 2009

Partilhar esta Página