Programação em Camada

Estou começando a “aprender” JAVA e pintou um problema.

Fiz 3 classes por enquanto

Estou mandando os codigos das 3 classes, o erro esta na classe GerenteBanco que esta chamando a classe Conexao.

Eu estou tendo muitos problemas em chamar metodos de outras classes e colcoar minhas classes em um mesmo pacote, se alguem souber de algum artigo que fale sobre isso eu agradeceria muito!!! :!:

Para declarar o package em cada classe eu devo criar algum arquivo extra ? pois quando eu crio automaticamente pelo Gel(edito de JAVA não RAD) ele cria um aquivo por isso a duvida.

package agendatelefonica;

import agendatelefonica.Conexao;
import java.sql.*;

public class GerenteBanco{
          Conexao cone;
          PreparedStatement ps;
          GerenteBanco(){

//1º erro - não encontra esta classe
             cone = new Conexao();
             }
              public boolean inseriMembro(Membros m) throws SQLException {
              String SQL = "insert into membros(nome, telefone, aniversario) values(?,?,?)";

//2º erro - nãoencontra o cone
              ps.cone.con.prepareStatment(SQL);

//3º erro - não encontra o get
              ps.getString(1,m.getNome());
              ps.setString(2,m.getTelefone());
              ps.setString(3,m.getAniversario());
              return true;
              }
              }
package agendatelefonica;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao{
    private final String URL = "jdbc:odbc:banco";
    private final String USR = "";
    private final String PSW = "";
    private Connection con;

 public Conexao(String driver){
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con = DriverManager.getConnection(URL,USR,PSW);
     }
    catch(ClassNotFoundException cEx){cEx.printStackTrace();}
    catch(SQLException cExcpt) {cExcpt.printStackTrace();}
}
public Connection getConn(){
 return con;
}
}
package agendatelefonica;

import java.sql.*;

public class Membros{

//private String SQLMEMBRO ="insert into membros(nome, telefone, aniversario) values(?,?,?)";
private String nome, telefone, aniversario;

   public Membros(){
      }

   public String getNome(){
   return nome;
      }

   public String getTelefone(){
   return telefone;
      }

   public String getAniversario(){
     return aniversario;
       }


    public void setNome(String nome) {
      this.nome = nome;
        }

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

      public void setAniversario(String aniversario){
        this.aniversario = aniversario;
        }

}

Da uma olhada nesse tutorial, vai te ajudar a trabalhar com packages e arquivos JAR: Tutorial.

Espero que te ajude.

:slight_smile:

//1º erro - não encontra esta classe
cone = new Conexao();

Explicação: Não funciona porque na classe Conexao você definiu um construtor que espera um String, public Conexao(String driver), e não definiu nenhum construtor sem argumentos. Lembre-se qdo vc define um novo construtor vc perde o construtor default.

Solução: Como vc não esta utilizando o parametro driver dentro do construtor, tire a declaração de argumento.

//2º erro - nãoencontra o cone
ps.cone.con.prepareStatment(SQL);

Explicação: Isso não existe.
Solução: ps = cone.getConn().prepareStatement(SQL);

//3º erro - não encontra o get
ps.getString(1,m.getNome());
ps.setString(2,m.getTelefone());
ps.setString(3,m.getAniversario());

Explicaçã: prepareStatement não possue metodo getString(), porque vc não vai pegar um valor, você vai setar um valor.
Solução:
ps.setString(1,m.getNome());
ps.setString(2,m.getTelefone());
ps.setString(3,m.getAniversario());

Valew galera,

Eu tenho muito que aprender ainda!!! :lol: