Problema usando Access

3 respostas
M

Bom eu to fazendo um trabalho academico para uma aplicação acessar o access. Eu fiz um classe pra acesso do sql, com os comandos e tal. O problema é tudo compila qd executo um programa pra testar os comandos nao aparece nenhuma mensagem de erro. Usando as intruções de delete e select tudo funciona, mas quando eu uso o insert into e o update e confiro no banco os campos estão vazios é como se eu nao tivesse executado o programa. Alguem tem alguma ideia ae? Abraços

Vai um trecho dos codigos:
public AccessEntradaDAO() throws SQLException, ClassNotFoundException
     {
 			
 			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             url="jdbc:odbc:OFICINA";
             con=DriverManager.getConnection(url,"usuario","senha"); 
             stmt= con.createStatement();     
             System.out.println("Passa pelo construtor");         
     }
     
     public void insereEntrada(Entrada e, char tipo) throws SQLException
     {
         String strData = DateFormat.getDateInstance().format(e.getDataIn());
        
         String clausula = "INSERT INTO entrada(codigo, dataentrada, descproblema, placa, telefone,estado, tipo)" + 
         "VALUES(\'" + e.getCodigo() + "\', \'" +  strData +"\', " +"\'" + e.getDescPro() +"\', " + "\'" +
          e.getPlaca() + "\', " + "\'" + e.getTelefone() +"\', \'"+ e.getEstado() + "\', \'" + tipo + "\')";
        
         stmt.executeUpdate(clausula);        
     }
 
 //Instrução de delete que funciona normal
 
     public void deletaEntrada(String num) throws SQLException
     {
         String clausula = "delete from entrada where codigo = " + "\'"+ num +"\'";
         stmt.executeUpdate(clausula);
     }

Ai o que ocorre é o seguinte, e ocorre para as instruções de insert update e delete onde eu uso o executeUpdate.
om o problema tá o seguinte, eis o porque não tá aparecenod lá:
Por exemplo no programa main eu chamo somente 1 vez apenas um comando:

insereEntrada(entrada1);

Bom era pra inserir normalmente, mas nao aparece nada no banco, no entando se eu fizer assim:

insereEntrada(entrada1);
 insereEntrada(entrada2);

Então o que ocorre é que o primeiro comando executa instrução e insere normalmente no banco, já o segundo não. É como se precisasse do executeUpdate do segundo comando ou algo parecido pra poder concluir o primeiro. Se eu fizer:

insereEntrada(entrada1);
 insereEntrada(entrada2);
 insereEntrada(entrada3);

A o primeiro e o segundo comando são inseridos no banco e o terceiro não. Bom alguém sabe dizer pq ocorre tal coisa. Se existe uma solução. Desde já agradeço.

[]'s

3 Respostas

B

Olá, não sei se faz algum efeito, mas quando vc abre a conexão, não crie o Statement de uma vez, crie ele somente quando for usar, tipo, um para o método de inserção, e não esqueça de fecha-lo, após o uso num método… pode ser isto.

M

Tentei aqui, mas continua o mesmo problema. :cry:

I

aproveitando aki o tipoco…
to com um problema em access tambem:

tenho uma consulta de livros por autor.
mas por exemplo. o autor do “java como programar” é: J. M. Deitel & P. J. Deitel
entao o usuario teria que digitar o nome todo.
queria q bastasse ele digitar “deitel” e busca traria todos os autores que tem deitel no nome.
daih eu coloquei o "like"
mas nao funciona.
se a consulta seguinte for feita substituindo like por “=” funciona beleza.
alguem sabe como faz pra usar o like no access?

public Collection consultarLivros(String autor){ 
		
	    Connection conn = null;
	    PreparedStatement stmt = null;
	    ResultSet rs = null;
	    Collection lista = new ArrayList();
	   
	    try {
	      conn = Banco.getConexao();
	      stmt = conn.prepareStatement("select * from livros where autor like ?");
	      stmt.setString(1, autor.trim());
	      rs = stmt.executeQuery();	      
	      while (rs.next()) {
	        Livro livro = new Livro(rs.getString(3), rs.getString(2),
	                                   rs.getString(4), rs.getString(5),rs.getString(6) );
	        lista.add(livro);
	      }
	    }
	    catch (SQLException ex) {
	    	System.out.println("Error fatal consultando livros autor!");
	    }
	    finally {
	      Banco.closeConexao(conn, rs, stmt);
	    }
	    return lista;
	    
	}

vlw!

Criado 18 de maio de 2005
Ultima resposta 18 de mai. de 2005
Respostas 3
Participantes 3