Agenda Telefonica em JAVA ( iniciante)

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.

[code] 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());        

}

}

[/code]

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”.

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 !

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+"') ");

.

[quote=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:

[code]
stmt.execute ("INSERT INTO AGENDA(nome, categoria, telefone, telefone1, " +
"apelido, celular, celular2, observacao,intmod ) VALUES (’ “+
nome + “’, '” + categoria + “’, '” + telefone + “’, '” + telefone1 + “’, '”+
apelido + “’, '” + celular + “’, '” + celular2 + “’,’” + observacao + “’,’”+intmod+”’) ");

[/code][/quote]

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. :slight_smile:
Sempre lembrando que é stmt.setTipo(referencia, valor);
Procure sobre PreparedStatement.

[]s :slight_smile:

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

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

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 !

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.