Problema com insert e update no ms access

4 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);
    }

4 Respostas

A

Sugiro que voce faca isso para o insert:

codigo vc pega de algum lugar, portanto crie a variavel fora
String e = textfield.getText();

Arruma o codigo, dentro do values os valores sao os mesmo que voce passou para o banco.

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 + "\')";

No delete vc nao esta deletando nada
esta assim:

String clausula = "delete from entrada where codigo = " + "\'"+ num +"\'";
         stmt.executeUpdate(clausula);
String clausula = "DELETE codigo, dataentrada, descproblema, placa, telefone,estado, tipo FROM entreda WHERE codigo = " + "\'"+ num +"\'";
         stmt.executeUpdate(clausula);

Altere e teste
espero ter ajudado
qq coisa posta de novo

M

Bom sobre o delete ele está deletando toda a linha em que ele acha o numero que eu passo no parâmetro. É o que eu queria, mesmo assim ta errado?

Sobre o insert deixa eu ver se eu entendi. Eu crio variáveis e vou jogando os retornos dos gets? Ai na string do insert eu coloco as variáveis?

[]'s

A

Para inserir eu faria assim
Tenho dois textfields

String nome = txt_nome.getText();
String idade = txt_idade.getText();

Estou recuprando os dados inseridos no campo

String query = "INSERT INTO cadastro(nome, idade)" +
VALUES ('"+nome+"', '"+idade+"');

Dentro do values sao as tuplas do seu banco.

Espero ter ajudado

M

Bom 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

Criado 16 de maio de 2005
Ultima resposta 18 de mai. de 2005
Respostas 4
Participantes 2