Banco de dados + DAO

3 respostas
N

Ae galera blz? Estou realizando uns testes para um projeto e nele estou usando uma Interface e as classes DAO.
O problema esta quando tento enviar um objeto para a DAO inserir no banco, enviando variaveis ele funciona normal, o problema esta mesmo na hora de enviar os objetos.
Segue as 5 classes que existem (Conexao, Interface, ClienteDAO, Cliente, Main)

Conexao.java
package Conexao;

//import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class Conexao {
        public Connection con = null;
        String res;
        String server = "localhost:3306";
        String db = "clientesBD";
        String user = "root";
        String pass = "";
       // ":mysql://localhost:3306/bancoexemplo?user=root&password="
        public String url = "JDBC:mysql://" + server + "/" + db + "?user=" + user + "&password=" + pass;
        

    public void conecta() throws SQLException, ClassNotFoundException{
        //Carrega o driver        
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver);
        //Conecta o BD
        con = (Connection) DriverManager.getConnection(url);
        System.out.print("Conectou");
    }
}
Interface.java
package Conexao;

public interface Interface {

    public void insere(Object obj);
    public void busca(Object obj);
    public void altera(Object obj);
    public void exclui(Object obj);

}
ClienteDAO.java
package DAO;

import Conexao.Conexao;
import com.mysql.jdbc.PreparedStatement;
import java.sql.SQLException;

public class ClienteDAO extends Conexao{

    public void insere(Object obj) throws SQLException {
        PreparedStatement pstm;
        pstm = (PreparedStatement) con.prepareStatement("INSERT INTO disciplinas(coddisciplina,descricao) VALUES(?,?);");
        pstm.setObject(1, obj);

    }

    public void busca(Object obj) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void altera(Object obj) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void exclui(Object obj) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    

}
Cliente.java
package primeiroprojetocombd;

import Conexao.Conexao;
import DAO.ClienteDAO;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public final class Cliente extends Conexao{
    private int id;
    private String nome;
    private float cpf;

    public Cliente(int id, String nome, float cpf){
        setId(id);
        setNome(nome);
        setCpf(cpf);
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

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

    public float getCpf() {
        return cpf;
    }

    public void setCpf(float cpf) {
        this.cpf = cpf;
    }


    public void inserir() throws SQLException{
        ClienteDAO cd = new ClienteDAO();
        Cliente c = new Cliente(id,nome,cpf);

        int iId = 1;
        float iCpf = 3330580;
        String iNome = "Jao Balao";

        c.setId(iId);
        c.setCpf(iCpf);
        c.setNome(iNome);
        JOptionPane.showMessageDialog(null,iId + " " + iCpf + " " + iNome);
        JOptionPane.showMessageDialog(null,c);
        cd.insere(c);

        JOptionPane.showMessageDialog(null,c);

    }

}
Main.java
package primeiroprojetocombd;

import java.sql.SQLException;

public class Main {

    
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Conexao.Conexao con = new Conexao.Conexao();
        con.conecta();

        Cliente c = new Cliente(id, nome, cpf); //ele acusa um erro aqui, diz que não consegue instanciar!

        c.inserir();

    }

}

Alguma sugestão?
vlw galera!

3 Respostas

R

meu amigo vc precisa de um curso Java.
De boa mesmo.
mas vou tentar te ajudar:

//tira isto aqui
 Cliente c = new Cliente(id, nome, cpf); //ele acusa um erro aqui, diz que não consegue instanciar!  

//e coloca isto 
 //nao recomendo cpf como float mas...
 Cliente c = new Cliente(1, "Seu nome" ,  123123123 ); //vc precisa passar atributos do tipo que vc criou o construtor

bom isto ai é o basicão. Acho melhor vc procurar aulas mesmo ok.

N
Qdo vc usa jdb vc ainda fica preso a linguagem relacional do banco de dados
public void insere(Object obj) throws SQLException {  
         PreparedStatement pstm;  
        pstm = (PreparedStatement) con.prepareStatement("INSERT INTO disciplinas(coddisciplina,descricao) VALUES(?,?);");  
        pstm.setObject(1, obj);  
  
    }

Vc precisa setar os parametros que vc declarou com "?" na sua "StringQuery", um pra cada "?", com seus determinados tipos.

public void insere(Cliente clientj) throws SQLException {  
         PreparedStatement pstm;  
        pstm = (PreparedStatement) con.prepareStatement("INSERT INTO disciplinas(coddisciplina,descricao) VALUES(?,?);");  //tablea cliente ou disciplina?
        pstm.setInt(1, client.getId());  
        pstm.setString(1, client.getNome());  
     pstm.setFloat(1, client.getCpf()); 
(...)
    }

e por aí vai... tem bastante tutorial por aí de JDBC
So veja se esta inserindo na tebla certa..

G

Olá, você pode dar uma olhada nesta apostila que vai te ajudar bastante:

http://www.caelum.com.br/download/caelum-java-web-fj21.pdf

Att,
André Dalcin

Criado 8 de novembro de 2010
Ultima resposta 8 de nov. de 2010
Respostas 3
Participantes 4