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.
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.
Figura 2. Verificando o nosso banco de dados
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.
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
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.