Agenda Telefonica em JAVA ( iniciante)

9 respostas
kikulouko

Por favor galera eu to precisando da ajuda de vocês ...
Eu estou montando uma agenda para armazenamento de de contatos.
Só que estou montando com o Access que é algo facil e prático para estar sendo
criado. Só que quando crio a conexão e tal da erro e não reconheçe irei mandar abaixo quem poder me ajudar !
A outra parte do codigo está com interface... se precisarem eu posto aqui um link para download do BD valeu !
quem poder ajudar fico agradecido.

import java.sql.*;


/**
 *
 * @author kikulouko
 */
public class Adicionar {

    private String nome=blak;
    private String categoria=blak;
    private String telefone=blak;
    private String telefone1=blak;
    private String apelido=blak;
    private String celular=blak;
    private String celular2=blak;
    private String observacao=blak;
    private int intmod;
    private int acao;

    
    static private String blak= "";
    static Connection con = null;
    
    public Adicionar(){
        
    if(con == null){
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("jdbc:odbc:OPNIAO","tutdb","1234");
        }catch(Exception e){
                System.err.println("Erro no comando SQL de Conexão");
            
            }
            
        }
    }
    
    
    public String getApelido() {
        return apelido;
    }

    public void setApelido(String apelido) {
        this.apelido = apelido;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getCelular2() {
        return celular2;
    }

    public void setCelular2(String celular2) {
        this.celular2 = celular2;
    }
    
    public int getIntmod(){
        return intmod;
    }
    
    public void setIntmod(int intmod){
        this.intmod=intmod;
    }
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getObservacao(){
        return observacao;
    }
    
    public void setObservacao(String observacao){
        this.observacao = observacao;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getTelefone1() {
        return telefone1;
    }

    public void setTelefone1(String telefone1) {
        this.telefone1 = telefone1;
    }

    public int getAcao() {
        return acao;
    }

    public void setAcao(int acao) {
        this.acao = acao;
    }
    
    public boolean fazAcao(){
        if (acao == 1){// consulta
            
            try{
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM AGENDA WHERE NOME LIKE '%" +nome+ " %'");
               if (rs.next()){
                
                nome=rs.getString(1);
                categoria=rs.getString(2);
                telefone=rs.getString(3);
                telefone1=rs.getString(4);
                apelido=rs.getString(5);
                celular=rs.getString(6);
                celular2=rs.getString(7);
                observacao=rs.getString(8);
                intmod=rs.getInt(9);
                
            } else {
                    acao = 3;
                    
                    fazAcao();
                    return false;
            }
                
                rs.close();
                stmt.close();
                
            } catch( Exception e) {
                System.err.println("Erro no comando SQL de consulta");
                return false;
            }
        } 
        
            else if (acao == 2){// inserir
            try{ 
                Statement stmt = con.createStatement();
               
                stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +
                "apelido, celular, celular2, observacao,intmod ) VALUES (' "+
                nome + "', '" + categoria + "', '" + telefone + "', '" + telefone1 + "', "+
                apelido + ", " + celular + ", " + celular2 + ", " + observacao + ","+intmod+") ");
                
                stmt.close();  
// ele sempre mostra esse erro !!!
                        
            }catch (Exception e){
                System.err.println("Erro no Comando SQL de Insert");
                return false;
            }
        } else if (acao == 3){//limpar campos
            
          nome=categoria=telefone=telefone1=apelido=celular=celular2=observacao=blak;  
          intmod=0;
        }  
         acao = 0;
         return true;  
        
    }
             
    public static void main (String args[]) {
        Adicionar p1 = new Adicionar();
        p1.setNome("Alan");
        p1.setCategoria("cto");
        p1.setTelefone("12234-5789");
        p1.setTelefone1("");
        p1.setApelido("lan");
        p1.setCelular("1234-5678");
        p1.setCelular2("");
        p1.setIntmod(2);
        p1.setAcao(2);
        p1.fazAcao();

        Adicionar p2 = new Adicionar();
        p2.setNome("Maria Joaquina");
        p2.setTelefone("3666-7728");
        p2.setIntmod(8);
        p2.setAcao(2);
        p2.fazAcao();

        Adicionar p3= new Adicionar();
        p3 = new Adicionar();
        p3.setNome("Joaquina");
        p3.setAcao(1);
        p3.fazAcao();
        System.out.println (p3.getNome()+": "+p3.getCelular());        
  
 }
    
    
}

9 Respostas

robson_costa

na linha 30 em q se tenta criar a conexão vc esta passando a senha desse jeito q postou ****, ou seja 4 asteriscos?
Pq se for isso, a menos q sua senha seja 4 asteriscos então vai dar erro mesmo ao tentar abrir a conexão.
Tem q passar a senha definida, se sua senha for 1234 entao passa-se a String “1234”.

kikulouko

Não man tem uma senha sim é que eu tava pondo o codigo aqui e decidir não por a senha …
Mas ele conecta ta sabendo e tal … mas não insere informação ninhuma !
Ele sempre mostra o erro e quando vai lá na tabela em ACCESS que eu deixei ai sempre ta vazia !
Resultando não armazenou nada.

Mas valeu .

Se souber como posso está resolvendo esse problema pode pegar os arquivos que postei lá tem o BD de agenda
e fzer o teste .
Ok !

D

Verifica a linha 160, no campo apelido, pois se vc esta setando um campo String tem que colocar as aspas simples,

stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +   
                "apelido, celular, celular2, observacao,intmod ) VALUES (' "+   
                nome + "', '" + categoria + "', '" + telefone + "', '" + telefone1 + "', "+   
                apelido + ", " + celular + ", " + celular2 + ", " + observacao + ","+intmod+") ");

por isso ta dando exception, tente deixar o código assim:

stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +   
                "apelido, celular, celular2, observacao,intmod ) VALUES (' "+   
                nome + "', '" + categoria + "', '" + telefone + "', '" + telefone1 + "', '"+   
                apelido + "', '" + celular + "', '" + celular2 + "','" + observacao + "','"+intmod+"') ");
R

.

soro
Diniz_gustavo:
Verifica a linha 160, no campo apelido, pois se vc esta setando um campo String tem que colocar as aspas simples,
stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +   
                "apelido, celular, celular2, observacao,intmod ) VALUES (' "+   
                nome + "', '" + categoria + "', '" + telefone + "', '" + telefone1 + "', "+   
                apelido + ", " + celular + ", " + celular2 + ", " + observacao + ","+intmod+") ");

por isso ta dando exception, tente deixar o código assim:

stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +   
                "apelido, celular, celular2, observacao,intmod ) VALUES (' "+   
                nome + "', '" + categoria + "', '" + telefone + "', '" + telefone1 + "', '"+   
                apelido + "', '" + celular + "', '" + celular2 + "','" + observacao + "','"+intmod+"') ");
String sql = "INSERT INTO AGENDA(nome,categoria,telefone,telefone1,apelido,celular,celular2,observacao,intmod) VALUES (?,?,?,?,?,?,?,?,?)";
PrepareStatement stmt =  con.prepareStatement(sql);
stmt.setString(1, nome);
...

Deixe seu código mais elegante e seguro, use PreparedStatement. :)
Sempre lembrando que é stmt.setTipo(referencia, valor);
Procure sobre PreparedStatement.

[]s :)

kikulouko

Valeu Irei Pesquisar sobre o PreparedStatement.
E alem de corrigir o que já foi dito aqui muito obrigado.

soro

Você pode achar algo na apostila da Caelum no capito de JDBC da apostia 21 java-web. :slight_smile:

kikulouko

Hum … valeu acho que não tinha olhado ainda …
tem algo que me ajudou mas se tiver alguma sugestão que me ajude com acesso ao banco de dados pelo Microsoft ACCESS ou alguem que possa ajudar !

soro

Você tem que adicionaro mdb ao ODBC do windows.
Class.forName = sun.jdbc.odbc.JdbcOdbcDriver
E o caminho acho que é: Jdbc:Odbc:nomeDoBanco

Dá uma pesquisada no google, deve ter muita coisa.

Criado 5 de julho de 2009
Ultima resposta 8 de jul. de 2009
Respostas 9
Participantes 5