Conexão com o banco de dados Access

7 respostas
jrtricolor

Galera

Alguém sabe me dizer porque está classe abaixo, não está funcionando direito?

public static Connection getConnectionAccess() throws SQLException {
	try {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		return DriverManager
				.getConnection("jdbc:odbc:Etiqueta", "root", "");
	} catch (ClassNotFoundException e) {
		throw new SQLException(e.getMessage());
	}
}

Quando tento inserir um novo registro não aparece mensagem de erro. mas tambem não dá erro.
Outra pergunta é necessário algum connectorJava para Access, como no mysql??

Valeu…

7 Respostas

marcelopacheco85

Daew blz!!!
cara naum entendi esse teu trecho de codigo:

.getConnection(“jdbc:odbc:Etiqueta”, “root”, “”);

Uso o acess, e estive olhando os codigos e a unica coisa q difere, das nossas classes e justamente essa linha,
tente fazer assim:

private Connection conexao;

conexao = DriverManager.getConnection(“jdbc:odbc:Etiqueta”, “root”, “”);

Cara, se o seu o trecho de codigo q eu coloquei aqui faz a mesma coisa que o meu, entao vc me desculpa nao poder te ajudar, pq pra mim e novidade esse esquema de colocar o ponto, e referenciar algo.

jrtricolor

Brother faz a mesma coisa que o seu código. Eu consigo chamar o método direto pelo fato de ele ser Static, entendeu? Mas valeu brother.

Rafael_Steil

Se o problema esta na hora de inserir, coloque o codigo referente a esta parte, ja que o codigo postado na primeira mensagem é apenas para obter uma conexao.

Rafael

jrtricolor

Esta é minha classe de DAO, que vai manipular o banco. Tem algo errado???

public class EtiquetaDAO {
	private Connection connecton;

	public EtiquetaDAO() throws SQLException {
		this.connecton = ConnectionFactory.getConnectionAccess();
	}

	public Etiqueta procuraEtiqueta(String item) throws SQLException {
		String sql = "Select * from CadastroEtiqueta where item = ?";
		PreparedStatement stmt = this.connecton.prepareStatement(sql);
		stmt.setString(1, item);
		ResultSet rs = stmt.executeQuery();

		if (!rs.next())
			return null;

		Etiqueta etiqueta = new Etiqueta();
		etiqueta.setItem(rs.getString("item"));
		etiqueta.setDescricao(rs.getString("descricao"));
		etiqueta.setBinloc(rs.getString("binloc"));
		return etiqueta;

	}

	public void inserirEtiqueta(Etiqueta etiqueta) throws SQLException {
		String sql = "INSERT INTO CadastroEtiqueta (ITEM, DESCRICAO, BINLOC) values (?,?,?)";
		PreparedStatement stmt = this.connecton.prepareStatement(sql);

		stmt.setString(1, etiqueta.getItem());
		stmt.setString(1, etiqueta.getDescricao());
		stmt.setString(1, etiqueta.getBinloc());
		stmt.close();
	}
}
Rafael_Steil

Tem sim. No metodo inserirEtiqueta voce cria o statement e o fecha sem executar.

Antes do .close(), voce precisa chamar o metodo .executeUpdate().

Rafael

jrtricolor

Verdade tem razão, mas agora aparece está mensagem de erro, sabe o que é??

Exception in thread “main” java.sql.SQLException: Driver does not support this function

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)

at br.com.DAO.EtiquetaDAO.inserirEtiqueta(EtiquetaDAO.java:42)

at br.com.teste.TestaConexao.main(TestaConexao.java:28)

Muito Obrigado, pelo toque.

danielbchaves

vc passou o mesmo índice para todos os parâmetros do statement

stmt.setString(1, etiqueta.getItem());  
         stmt.setString(1, etiqueta.getDescricao());  
         stmt.setString(1, etiqueta.getBinloc());

deveria ser

stmt.setString(1, etiqueta.getItem());  
         stmt.setString(2, etiqueta.getDescricao());  
         stmt.setString(3, etiqueta.getBinloc());

agora só uma observação… pelo que já vi usando JdbcOdbcDriver, as mensagens de erro não são bem claras

[]s

Criado 16 de agosto de 2008
Ultima resposta 17 de ago. de 2008
Respostas 7
Participantes 4