Conexão com banco de dados Access

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

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.;
import javax.swing.
;
import java.sql.;
import java.util.
;

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