Duvidas com DAO

10 respostas
K

estou tentando aprender DAO, comecei a fezer uma aplicação de exemplo, que não esta apresentando erro porém não ta inserindo no banco. Para esse estudo to usando Access.

se alguem puder ajudar !!!

seguem as classes:

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


public class ConnectionFactory {

	public static Connection getConnection() throws SQLException {
		try {
		
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		
			System.out.println("Conectando ao banco");
		
			return DriverManager.getConnection("jdbc:odbc:bdfunc");
		    } 
		catch (ClassNotFoundException e) 
		{
		throw new SQLException(e.getMessage());
		}
   }
}
-------------------------------------
package dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import jdbc.ConnectionFactory;
import modelo.Contato;

public class ContatoDAO {
	// a conexão com o banco de dados
	
	private Connection connection;
	
	public ContatoDAO() throws SQLException {
	
		this.connection = ConnectionFactory.getConnection();
	}
	
	public void adiciona(Contato contato) throws SQLException {
	
		// prepared statement para inserção
 		Statement stmt = this.connection.createStatement();
 		
 	    // pega os valores
 		String mat = contato.getMat();
 		String nome = contato.getNome();
 		String end = contato.getEnd();
 		String tel = contato.getTel();
 		
 		String sql = "insert into tbl_func (mat,nome,end,tel) Values ('"+
 																mat+"','"+
 																nome+"','"+
 																end+"','"+
 																tel+"')";

 		// executa
 		stmt.execute(sql);
 		System.out.println("Registro Incluido com Sucesso !!");
 		stmt.close();
	}
	}

---------------------------

package modelo;


public class Contato {
	
	private String mat;
	private String nome;
	private String end;
	private String tel;
	
	public String getMat() {
		return mat;
	}
	public void setMat(String mat) {
		this.mat = mat;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEnd() {
		return end;
	}
	public void setEnd(String end) {
		this.end = end;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	
		
	}


-------------------

package jdbc;

import java.sql.SQLException;
import modelo.Contato;
import dao.ContatoDAO;


public class TesteInsere {

	public static void main(String[] args) throws SQLException {
		
		Contato cont = new Contato();
		
		cont.setMat("33333");
		cont.setNome("teste inserindo DAO");
		cont.setEnd("rua teste xxx");
		cont.setTel("1111111");

		ContatoDAO contDAO = new ContatoDAO();
		
		contDAO.adiciona(cont);

	}

}

10 Respostas

C

Boa tarde

Eae blz, então cara analisei sua classe DAO, ao invés de usar stmt.execute(sql); tenta usar stmt.executeUpdate(sql), agora na sua conexão notei que vc apenas adicionou a url de conexão vc não adicionou o usuario e senha tenta dar uma verificada nisso também.

Qualquer coisa posta ai que a gente tentar resolver.

Falou.

LucianoM86

No método main ao invés de dar o throws SQLException, envolva o método contDAO.adiciona com um try/catch…assim você saberá se está dando algum problema.

K

Caio fiz a troca que vc sugeriu e deu o seguinte erro:

Exception in thread “main” java.sql.SQLException: No ResultSet was produced

at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:259)

at dao.ContatoDAO.adiciona(ContatoDAO.java:38)

at jdbc.TesteInsere.main(TesteInsere.java:21)
LucianoM86

Tentou fazer a modificação que o Caio sugeriu?

K

fiz a modificação e deu erro olha o post anterior

C

Boa noite

Então dei uma olhada no seu erro e vou sugerir que vc faça 3 modificações:

1º) Na Conexão: Nunca trabalhei com Access no Java, mas pelo menos no mysql a o meu getConnection ficaraia assim:

DriverManager.getConnection(“jdbc:mysql://localhost/exemplo”, “user”, “password”);

2º) O erro esta mostrando que vc tentou usar executeQuery para rodar o seu insert, tente usar executeUpdate que é indicado para insert, update e delete.

3º) Tente verificar se vc esta com o jar do access referenciado em seu projeto.

Qualquer coisa posta ai.

Falou.

K

Caio no access ñ precisa de user e senha é assim mesmo. quando chegar em casa vou testar com executeupdate() e te falo se funcionou. vc já usou ADO?

tb ñ uso o access, mas estava estudando no meu trabalho e ñ podia instalar o mysql

valeu pela ajuda cara.

C

Boa noite

Então kafuri, blz cara tenta com executeUpdate e avisa ai se funciona, nunca utilizei o Access por isso nem sabia que não precisa de usuario e senha para conectar.

Testa e qualquer coisa posta ai.

Falou.

K

fiz a troca e ñ da erro nenhum agora, porém ñ grava no banco !!!

C

Boa tarde

Então kafuri, para te ajudar a resolver esse problema da uma olhada nesses tutoriais, ele fala sobre Java + Access:

http://imasters.uol.com.br/artigo/2444?cn=2444&cc=15

http://www.javafree.org/javabb/viewtopic.jbb?t=859460

Falou.

Criado 22 de outubro de 2008
Ultima resposta 23 de out. de 2008
Respostas 10
Participantes 3