Conexão com banco de dados Access

1 resposta
richardpeder

Caros amigos do GUJ:

A algum tempo atras estava desenvolvendo uma aplicação em java que fazia conexao com banco de dados Access. Consegui criar a classe de conexão ao banco, mas não consegui fazer insert, update, delete…essas coisas. Apos algum tempo tentando, apareceram novos afazeres e larguei de lado esta aplicação. Gostaria de saber de vcs, se existe alguma regra ou alguma particularidade para que se manipule access com java. Tentei exaustivamente inserir, atualizar e deletar registros, mas nenhum dava certo…quais os tipos das tuplas do banco de dados access são compativeis a quais tipos de variaveis em java??? Parece meio confuso minhas perguntas, mas eh mais ou menos por ai mesmo…al´guém poderia me ajudar com isso? alguém tem uma classe de conexão a access em java??, pois perdi a minha :lol:

Agradeço desde já…

Ate mais

1 Resposta

F

Richard,

O grande segredo de se fazer atualizações em banco de dados é garantir que o código SQL contido na String que está sendo passado para o banco esteja 100% correta, seria interessante que ao executar o código vc pudesse visualizar o que está sendo executado, ao menos até que as atualizações funcionem.

Uma classe de conexão com o banco Access poderia ser assim (ao menos é essa que eu tenho comigo e funciona, se alguém tiver uma maneira melhor vai servir pra mim tb). Não esqueça do ODBC

import java.awt.<em>;

import javax.swing.</em>;

import java.sql.<em>;

import java.util.</em>;

public class Connector extends Object{
private Connection connection;

public Connector()

{

try {

String url = jdbc:odbc:DB;  // onde DB é o nome do ODBC.
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
  connection = DriverManager.getConnection( url );
}

catch ( ClassNotFoundException cnfex ) {

// process ClassNotFoundExceptions here

cnfex.printStackTrace();
}

catch ( SQLException sqlex ) {

// process SQLExceptions here

sqlex.printStackTrace();
}

catch ( Exception ex ) {

// process remaining Exceptions here

ex.printStackTrace();
}
}

public Connection getConnection()

{

return connection;

}

}

Quando vc faz atualizações no banco access, como por exemplo um INSERT, os campos inseridos devem estar entre apóstrofes (’ ), talvez aí é que esteja o problema um trecho de código para insersão poderia ser assim:

Connection connection;

Connector connect;

JTextArea output;   //Com esse cara aqui eu consigo visualizar o código a   ser executado pelo banco se vc tiver dúvidas quanto ao código vc pode até copia-lo executar diretamente no banco.

try{

connect = new Connector();

connection = connect.getConnection();

if (!connection.isClosed()) output.append( "Connection successful

" );

}

catch ( SQLException sqlex ) {

// process SQLExceptions here

sqlex.printStackTrace();

output.append( "Connection unsuccessful

" +

sqlex.toString() );

}

///// e para inserir es aí um trecho

try {
Statement statement = connection.createStatement();

String query = "INSERT INTO tabela_qualquer (" +
           "firstname, lastname, address, city, " +
           "stateorprovince, postalcode, country, " +
           "emailaddress, homephone, faxnumber" +
           ") VALUES ('" +
           fields.first.getText() + "', '" + 
           fields.last.getText() + "', '" + 
           fields.address.getText() + "', '" + 
           fields.city.getText() + "', '" + 
           fields.state.getText() + "', '" + 
           fields.zip.getText() + "', '" + 
           fields.country.getText() + "', '" + 
           fields.email.getText() + "', '" + 
           fields.home.getText() + "', '" + 
           fields.fax.getText() + "')";
        output.append( "
Sending query: " +

connection.nativeSQL( query )

+ "

" );

int result = statement.executeUpdate( query );
if ( result == 1 )
           output.append( "
Insertion successful

" );

else {

output.append( "

Insertion failed

" );

fields.first.setText( “” );

fields.last.setText( “” );

fields.address.setText( “” );

fields.city.setText( “” );

fields.state.setText( “” );

fields.zip.setText( “” );

fields.country.setText( “” );

fields.email.setText( “” );

fields.home.setText( “” );

fields.fax.setText( “” );

}

}

Para atualizar é a mesma coisa, e mais uma vez… É bom antes executar o código diretamente no Banco.

Se ficou faltando alguma coisa é só perguntar, se eu souber e poder ajudar…

//Fábio

Criado 5 de janeiro de 2003
Ultima resposta 5 de jan. de 2003
Respostas 1
Participantes 2