Conexão nativa a bancos de dados em ooBasic

Desenvolvimento e Consultoria  |    14/03/2010   |   3848 hits   |   J. Ricardo Simões Rodrigues

O HSQLDB é o motor de banco de dados do OpenOffice/BrOffice por padrão. Outros BDs podem ser acessados utilizando-se ODBC ou JDBC, por exemplo.

Porém, para ter acesso via ooBasic a esses BDs, geralmente uma camada intermediária é usada.


DB -> JDBC -> ooBase -> ooBasic

Sem essa camada intermediária, a conexão ficaria assim, sem a intervenção do ooBase.


DB -> JDBC -> ooBasic

Outra vantagem é que não será necessária a distribuição de um arquivo do ooBase.

JDBC para PostgreSQL

O driver JDBC permite que programas em Java conectem a um servidor PostgreSQL. Pode ser baixado da página JDBC do PostgreSQL.

Neste exemplo baixei o arquivo postgresql-8.4-701.jdbc3.jar. A maneira mais prática de instalar o adaptador é colocá-lo no diretório lib\ext\ de sua instalação Java. Em meu MS Windows Seven o caminho é o seguinte:


C:\Program Files (x86)\Java\jre6\lib\ext\

Se o BrOffice estiver carregado, deve ser encerrado, inclusive o iniciador rápido que fica na bandeja do sistema.

No editor do ooBasic, digitamos o exemplo básico adiante.


Sub testPostgresql ()
driverManager = createUnoService( "com.sun.star.sdbc.DriverManager" )
conURL = "jdbc:postgresql://localhost:5432/meudb"

dim Props(2) as new com.sun.star.beans.PropertyValue
props(0).Name = "user"
props(0).value = "nomedousuariodopg" 'Usuário
props(1).Name = "password"
props(1).value = "" 'Senha
props(2).Name = "JavaDriverClass"
props(2).Value = "org.postgresql.Driver"

oConnection = driverManager.getConnectionWithInfo( conURL, Props() )

'Uma simples query de exemplo

sQuery="SELECT * FROM tabela"
oStatement=oConnection.createStatement()
oResults = oStatement.executeQuery(sQuery)

While oResults.Next
msg = msg & " "& oResults.getString(1)
Wend

msgbox msg

oConnection.dispose
end sub

JDBC para mySQL

O adaptador JDBC para o mySQL está na página Connector/J.

Basta fazer a descarga do arquivo no formato desejado (zip ou tgz), descompactar e copiar o arquivo mysql-connector-java-n.n.n-bin.jar para o diretório lib\ext\ de sua instalação Java, onde n.n.n é a versão do adaptador, conforme exemplo acima referente ao PostgreSQL.

No código, as únicas alterações necessárias serão as seguintes:

  • na atribuição da variável conURL, substituímos postgresl por mysql
  • na atribuição da variável props(2).Value, digitamos "com.mysql.jdbc.Driver"

O código ficará assim:


Sub testMysql ()

driverManager = createUnoService( "com.sun.star.sdbc.DriverManager" )

conURL = "jdbc:mysql://localhost:3306/ricardosimoes_com"

dim Props(2) as new com.sun.star.beans.PropertyValue
props(0).Name = "user"
props(0).value = "nomedousuariodomysql" 'Usuário
props(1).Name = "password"
props(1).value = "" 'Senha
props(2).Name = "JavaDriverClass"
props(2).Value = "com.mysql.jdbc.Driver"

oConnection = driverManager.getConnectionWithInfo( conURL, Props() )

sQuery="SELECT * FROM tabela;"
oStatement=oConnection.createStatement()
oResults = oStatement.executeQuery(sQuery)

While oResults.Next
msg = msg & " "& oResults.getString(2)
Wend

msgbox msg

oConnection.dispose

end sub

Happy codding with ooBasic!!

Última edição concluída em 14/03/2010 por J. Ricardo Simões Rodrigues.