terça-feira, 2 de outubro de 2007

Conexão do PostgreSQL com o Java

No DETRAN-CE, os sistemas finalísticos foram desenvolvidos em Java, para testar a conexão do PostgreSQL com o Java podem ser utilizados inúmeros clientes de gerenciamento ou modelagem do PostgreSQL. No exemplo que vou mostrar abaixo, utilizei o driver JDBC. O driver JDBC a ser utilizado deve estar de acordo com a versão do PostgreSQL, entretanto temos instalado a versão 8.2.4 do banco e nos testes ela só funcionou com o driver 8.1-410.jdbc3, quando o correto seria utilizar a versão 8.2-506.jdbc4. Ainda estou realizando mais alguns uns testes para entender o que ocorreu.No exemplo abaixo criei uma tabela com dados de livros (id, nome, autor, editor, ano) e me conectei ao postgres para retornar uma consulta simples.

// início da aplicação

import java.sql.*;
public class SQLStatement {
public static void main(String args[]) {
String url = "jdbc:postgresql://host:5432/nomedobanco";
Connection con;
String query = "select * from nomedoesquema.nomedatabela";
Statement stmt;
try {
Class.forName("org.postgresql.Driver");
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
try {
con = DriverManager.getConnection(url,"login", "senha");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
int rowCount = 1;
System.out.println("Cadastro de Livros");
while (rs.next()) {
System.out.println("Livro " + rowCount);
for (int i = 1; i <= numberOfColumns; i++) {
System.out.print(" Campo " + i + ": ");
System.out.println(rs.getString(i));
}
System.out.println("");
rowCount++;
}
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.print("SQLException: ");
System.err.println(ex.getMessage());
}
}
}

// fim da aplicação

  • RESULTADO DA EXECUÇÃO UTILIZANDO O JDBC 8.1-410.jdbc3

Cadastro de Livros
Livro 1
Campo 1: 3
Campo 2: Estratégia empresarial : tendências e desafios
Campo 3: TACHIZAWA
Campo 4: Makron Books
Campo 5: 2000

Livro 2
Campo 1: 2
Campo 2: Como inovar na empresa através da tecnologia da informação
Campo 3: DAVEPORT
Campo 4: Campus
Campo 5: 1994

Livro 3:
Campo 1: 1
Campo 2: O Planej Estratégico dentro do Conceito de Adm Estratégica
Campo 3: ALDAY
Campo 4: FAE
Campo 5: 2006


  • RESULTADO DA EXECUÇÃO UTILIZANDO O JDBC 8.2-506.jdbc4

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(
Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(
Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(
Native Method)
at java.lang.Class.forName(Unknown Source)
at SQLStatement.main(
SQLStatement.java:11)

2 comentários:

Samuel de Paula disse...

Esse erro de wrong version .class eu ja vi quando tenta usar por exemplo um .class compilado no java 5 no java 4!

Wosley Nogueira disse...

Vou verificar, obrigado pela dica Samuel.

by TemplatesForYouTFY
SoSuechtig, Burajiru