PreparedStatement em banco de dados access

4 respostas
A

fala ai galera blz... to precisando de uma ajudinha aqui.. fiz uma aplicaçao em java, só q precisei fazer a conexão com um banco access de um outro sistema q tenho aqui.. mas não estou conseguindo fazer alterações no banco.. n]ao sei c access aceita preparedStatement.. será q alguem pode me dar uma luz.. vou postar minhas classes aqui.. desde já agradeço..

public void update(Object obj) throws IOException {
        if(obj instanceof negocio.Cliente){
            negocio.Cliente cliente = (negocio.Cliente)obj;
            
            File file = new File("c:/Arquivos de programas/Satrac_Oficina/dist/lib/sql.properties");
            Properties properties = new Properties();
            FileInputStream fis = null;
            PreparedStatement stmt = null;
            
            ConectarAccess conn = new ConectarAccess();
            try {
                connection = conn.getConnection();
                
                fis = new FileInputStream(file);
                properties.load(fis);
                fis.close();
                System.out.println(" chegou aqui" + cliente.getCodigo());
                stmt = connection.prepareStatement(properties.getProperty("UPDATE_CLIENTE"));
                stmt.setString(1, "'" + cliente.getNome() + "'");
                stmt.setString(2, cliente.getObs());
                stmt.setString(3, cliente.getndereco().getRua());
                stmt.setString(4, cliente.getndereco().getBairro());
                stmt.setString(5, cliente.getndereco().getCep());
                stmt.setString(6, cliente.getndereco().getCidade());
                stmt.setString(7, cliente.getndereco().getEstado());
                stmt.setString(8, cliente.getTelefone());
                stmt.setString(9, cliente.getFax());
                stmt.setString(10, cliente.getContato());
                stmt.setString(11, cliente.getCnpj());
                stmt.setString(12, cliente.getInscricao());
                stmt.setString(13, cliente.getEmail());
                stmt.setString(14, cliente.getSite());
                stmt.setInt(15, cliente.getCodigo());
                System.out.println(" chegou");
                stmt.executeUpdate();
                 System.out.println(" passou");
            }catch (SQLException ex) {
                throw new IOException("UPDATE_CLIENTE: " + ex);
            } catch (Exception ex) {
                ex.printStackTrace();}
        }
}

minha classe de conexão:

public class ConectarAccess {
    
    /** Creates a new instance of ConectarAccess */
    public ConectarAccess() {
    }
    
    static Connection theConn = null;
    
    public static Connection getConnection() throws Exception {
        Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
        Connection c = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/teste/satrac.mdb");
        return c;
    }
}

4 Respostas

Rafael_Nunes

Aceitar ele aceita, mas lembro que algumas versões antigas tinham alguns bugs com os métodos setXXX().

Cola aí a stack trace, e qual o driver você está utilizando?

A

a sim . esqueci de postar o erro…

java.io.IOException: java.io.IOException: negocio.cliente.alterarCliente: java.io.IOException: UPDATE_CLIENTE: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Valor de argumento inválido
Rafael_Nunes

O erro provavelmente é nos parâmetros que você está passando. Reveja tudo que está sendo passado para os métodos setXXX

A

mais então… pq no banoc access ta assim… os campos estão configurados como… numero, memorando e texto;; no numero eu passo o parametro pelo setInt e o memorando e o texto eu passo pelo setString… será q tenho q passar outro tipo??? e c tive qual é??

Criado 15 de fevereiro de 2008
Ultima resposta 15 de fev. de 2008
Respostas 4
Participantes 2