Nao insere via ODBC

6 respostas
F

Vejam o seguinte trecho de codigo:

Statement stmt=con.createStatement();
       String sql = "INSERT INTO Aluno (nome, matricula) VALUES          ('"+this.nome+"','"+this.matricula+"')";
       stmt.executeUpdate(sql);

O banco é o access/windows XP. Nao alterei o autocommited.
Acesso via odbc.
Nenhuma exceção é lançada, pode crer.
Tudo roda “num silencio”, porem no banco nao insere nenhuma linha.

Tem alguma cofiguração especial no ODBC que devo fazer?

EDIT (Thingol) Pus os tags [ code ] na sua mensagem. Eu até achava que você estava com problemas de aspas, até que vi sua mensagem formatada.

6 Respostas

Rafael_Steil

Voce nao esta fazendo

try {
    // statement
}
catch (Exeption e) {}

esta?

Rafael

wandersonxs

Se estiver mude para SQLException.
Entaum vc ver’a qual erro estar’a ocorrendo.

Abracos

Wanderson :twisted:

Rafael_Steil

O problema nao eh o tipo de exception - Exception eh o supertype de SQLException e todas outras Checked Exceptions - , mas sim omitir a mesma.

Rafael

F

A classe esta logo abaixo e não ha problema com relação ao tratamento de exceção. Nenhuma exceção é reportada quando um objeto da classe é instanciado, “setado” os valores dos atributos e muito menos quando o metodo inserir() é chamado.

Até que insere, mas tenho que chamar o metodo inserir() duas vezes assim:

a.inserir();
a.inserir();

O negócio é como se houvesse uma transação sem “commite”. Mas nao estou usando transação, como podem ver no código. E aí?

Agradeço pela atenção dos senhores

import java.sql.*;

public class Aluno {

private String nome;

private String matricula;

private static Connection con;
public Aluno(){
  nome = "";
  matricula = "";

  if (con == null){
     try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection("jdbc:odbc:escola", "admin", "");
     } catch (Exception e) {
        System.err.println ("Erro no comando SQL de Conexao: "+e.toString());
     }
  }
}

public void inserir() throws SQLException{
   Statement stmt=con.createStatement();
   String sql = "INSERT INTO Aluno (nome, matricula) VALUES ('"+this.nome+"','"+this.matricula+"')";
   stmt.executeUpdate(sql);
   stmt.close();
}

public String getNome() {
    return nome;
}

public void setNome(String value) {
    nome = value;
}

public String getMatricula() {
    return matricula;
}

public void setMatricula(String value) {
    matricula = value;
}

public String toString(){
   return nome+" "+matricula;


}

}

Z

stmt.executeUpdate(sql); retorna o que?

Tente usar PreparedStatement, vai facilitar na hora de passar os parametros.

F

Ai sim, ocorre um erro. O driver nao suporta etc.

Criado 11 de maio de 2005
Ultima resposta 11 de mai. de 2005
Respostas 6
Participantes 4