Como acessar o Progress via JDBC


Tenho recebido muitas dúvidas sobre como utilizar o banco de dados Progress usando Java e JDBC, pois bem devido a estas dúvidas e a sugestão de algumas pessoas resolvi escrever este artigo mostrando como conectar-se ao Progress via JDBC. Neste artigo iremos criar uma aplicação simples com o NetBeans a qual usaremos para manipular um banco de dados Progress. Antes de iniciar vamos conhecer melhor  o driver JDBC do Progress.

 

Pogress JDBC driver

 

O driver JDBC do Progress é um driver do tipo 2 portanto usa chamadas nativas durante o processo de comunicação com o banco de dados, o driver é escrito parte em Java e parte em C++ (para as chamadas nativas)  sendo composto por vários arquivos, dependendo do sistema operacional. Abaixo na Listagem 1 podemos ver a relação destes arquivos.

 

Plataforma

Arquivos

Windows NT

 

$DLC\java\jdbc.jar

$DLC\bin\JdbcProgress.dll

$DLC\bin\procli92.dll

Sun Solaris SPARC (32 bit and 64 bit)

Compaq Tru64 UNIX

Linux X86

$DLC/java/jdbc.jar

$DLC/lib/libJdbcProgress.so

$DLC/lib/libprocli92.so

IBM AIX

 

$DLC/java/jdbc.jar

$DLC/lib/libJdbcProgress.a

$DLC/lib/libprocli92.a

HP-UX (32 bit and 64 bit)

$DLC/java/jdbc.jar

$DLC/lib/libJdbcProgress.sl

$DLC/lib/libprocli92.sl

Tabela 1. Lista com os arquivos que compoem o driver JDBC

 

A pasta onde está o arquivo jdbc.jar  deve obrigatoriamente estar inclusa no CLASSPATH e a pasta onde estão os demais arquivos deve obrigatoriamente estar inclusa no PATH do sistema, caso contrario não será possível efetuar a conexão com o Progress (aqui está um dos grandes problemas enfrentados por novos  usuários ao tentar conectar-se ao Progress via JDBC). Provavelmente os usuários de Progress já devem saber o significado do $DLC no nome dos arquivos apresentados acima, porém não custa lembrar. A variável $DLC é usando pelo Progress e contém o diretório de instalação do software.

  

Criando um banco de dados Progress

 

Antes de prosseguirmos vamos criar o banco de dados Progress e carregar o seu servidor, em seguida montaremos a aplicação em Java para acessa-lo via JDBC. Utilizando a ferramenta Data Administration vamos então criar o nosso banco de dados exemplo, selecione as opções Database -> Create (veja a Figura 1). Nosso banco de dados criado será chamado de SQLMagazine.

 

05-03-07pic01.JPG 

Figura 1. Criando nosso banco de dados SQLMagazine

 

Carregando o servidor para o banco de dados

No Progress para cada banco de dados devemos ter um serviço em execução ouvindo determinada porta para processar conexões dos clientes. Na Figura 2 podemos ver pelo Windows Explorer que nosso banco de dados foi criado com sucesso na unidade G:\ (arquivo SQLMagazine.db). Na Figura 3 temos o comando que carrega o servidor para o nosso banco de dados, a porta escolha é a 5000 (podemos ver pelo parametro –S), o comando _mprosrv carrega o servidor para o banco de dados especificado, este comando possui uma lista grande de parametros porém não vamos entrar nesse assunto pois o objetivo do artigo é o drive JDBC.

 

05-03-07pic02.JPG 

Figura 2. Verificando o nosso banco de dados

 

05-03-07pic03.JPG 

Figura 3. Carregando o servidor para o nosso banco de dados

  

Acessando o Progress via JDBC

 

Tendo criado o nosso banco de dados e carregarmos o servidor para este estamos agora prontos para criar nossa aplicação Java acessando o banco Progress, vamos utilizar o ambiente NetBeans para desenvole-la. Tendo carregado o NetBeans selecione File -> New Project -> General -> Java Application  e em Project Name coloque “ProgressJDBC” ou qualquer outro nome de sua preferencia.

Agora vamos registrar o driver JDBC no NetBeans, clique com o botão direito em Libraries -> Add JAR/Folder e selecione a pasta onde está o arquivo jdbc.jar, veja a Figura 4.

 

05-03-07pic04.JPG 

Figura 4. Registrando o driver JDBC no NetBeans

 

Na Listagem 1 temos o código fonte completo da nossa aplicação exemplo e na Figura 5 temos o resultado obtido após a sua execução.

 

package progressjdbc;

import java.sql.*;

 

public class Main {

   

    Main() {}

   

    public static void main(String[] args) {

         /* String de conexão com o banco de dados */

         String urlDB = new String("jdbc:jdbcprogress:T:paulo:5000:SQLMagazine");

         Connection con;

         Statement stmt;

         ResultSet rs;

   

         try {

            /* Registrando a classe do driver JDBC */

            Class.forName ("com.progress.sql.jdbc.JdbcProgressDriver");

         }

         catch(Exception ex) {

            System.out.println("Erro: " + ex.getMessage());

         }

         try {

            /* Conectando-se com o banco de dados */

            con = DriverManager.getConnection(urlDB,"paulo","");

            String tbl = "CREATE TABLE CLIENTES (CODIGO INT NOT NULL PRIMARY KEY," +

                         "NOME"

           

            stmt = con.createStatement();

            /* Criando a tabela CLIENTES */

            stmt.execute(tbl);

           

            /* Populando a tabela CLIENTES */

            stmt.execute("INSERT INTO CLIENTES VALUES(1,'SQL Magazine')");

            stmt.execute("INSERT INTO CLIENTES VALUES(2,'Java Magazine')");

            stmt.execute("INSERT INTO CLIENTES VALUES(3,'.NET Magazine')");

            stmt.execute("INSERT INTO CLIENTES VALUES(4,'Clube Delphi')");

 

            System.out.println("\nListando os registros da tabela");

            System.out.println("----------------------------------------------------------------");

            rs = stmt.executeQuery("SELECT * FROM CLIENTES");

           

            /* Listando os registros da tabela */

            while(rs.next()) {

                System.out.println(rs.getInt(1) + " " + rs.getString(2));

            }

 

            System.out.println("\nConexão com Progress efetuada com sucesso...");

         }

         catch(Exception e) {

            System.out.println("Erro: " + e.getMessage());

         }

    }

   

}

Listagem 1. Codigo fonte da aplicação Java

 

05-03-07pic05.JPG 

Figura 5. Lista dos registros retornados pela aplicação

 

Conclusão

 

O Progress é um poderoso banco de dados que na minha opinião é comparável com os grandes do mercado porém não é muito difundido no mercado brasileiro. Trata-se de uma excelente SGBD capaz de processar inúmeras conexões e transações on line. Neste artigo mostramos como conectar-se ao Progress via JDBC, em artigos futuros, pretendo explicar melhor o funcionamento deste banco de dados e mostrar como usá-la para suas aplicações. Espero que as informações contidas aqui sejam úteis a todos. Qualquer dúvida não existe em me escrever. Um grande abraço à todos e até a próxima.