VB.NET  - DB2 .NET Data Provider


Nem só de SQL Server , MySQL, FireBird, Oracle e Access  vivem os desenvolvedores .NET, há outros concorrentes neste páreo, e, concorrentes de peso. Que o diga quem já usou o banco de dados BD2 da IBM. Se você pensa que ele não para o seu bolso, saiba que a IBM possui a versão DB2 Express-C (Free to build, deploy, distribute ... No limits) que você pode baixar gratuitamente no site: http://www-306.ibm.com/software/data/db2/udb/db2express/download.html (Prepare-se são mais de 200 MB)

O suporte para o acesso usando ADO.NET é dado pelo DB2 .NET Data Provider e,  no site da IBM você pode encontrar a documentação em português. A seguir estou reproduzindo partes da informação sobre o provedor:

O DB2 .NET Data Provider estende o suporte do DB2 para a interface ADO.NET. O DB2 .NET Data Provider fornece acesso seguro e de alto desempenho a dados do DB2.

O DB2 .NET Data Provider permite que seus aplicativos .NET acessem os seguintes sistemas de gerenciamento de banco de dados:

Além do DB2 .NET Data Provider, também existe uma coleta de complementos do Microsoft Visual Studio .NET IDE. Esses complementos simplificam a criação de aplicativos do DB2 que utilizam a interface ADO.NET. Você também pode utilizar os complementos para desenvolver objetos do lado do servidor, tais como, procedimentos armazenados SQL e funções definidas pelo usuário.

Requisitos do Sistema para o DB2 .NET Data Provider

Antes de utilizar o programa de Instalação do DB2 para instalar o DB2 .NET Data Provider, é necessário ter o .NET Framework (Versão 1.0 ou Versão 1.1) já instalado no computador. Se o .NET Framework não estiver instalado, o programa de Instalação do DB2 não instalará o DB2 .NET Data Provider.

Para o DB2 Universal Database para AS/400 e iSeries, a seguinte correção é necessária no servidor: APAR ii13348.

Somente o .NET Framework Versão 1.1 e o Visual Studio .NET 2003 são suportados para utilização com o DB2 para VSE & VM, e DB2 para servidores iSeries. O .NET Framework Versão 1.0 e o Visual Studio .NET 2002 não são suportados para utilização com esses servidores.

Desenvolvendo Aplicativos do DB2 .NET Data Provider

O espaço de nomes do IBM.Data.DB2 contém o DB2 .NET Data Provider.

O DB2 .NET Data Provider oferece a funcionalidade para conexão com um banco de dados, execução de comandos e recuperação de resultados. Estes resultados podem ser processados diretamente, ou colocados em um DataSet do ADO.NET para processamento adicional durante um estado desconectado. Enquanto estiver no DataSet, os dados podem ser expostos ao usuário, combinados com outros dados de várias origens, ou transmitidos remotamente entre camadas. Qualquer processamento executado nos dados enquanto estiver no DataSet pode ser reconciliado para o banco de dados.

O DB2 .NET Data Provider foi projetado para ser simples. Ele consiste em uma camada mínima entre o banco de dados e seu código. Isto estende a funcionalidade sem prejudicar o desempenho.

Existem quatro objetos principais que formam o DB2 .NET Data Provider. A tabela a seguir descreve estes objetos e suas funções.

Objeto Descrição
DB2Connection Estabelece uma conexão com um banco de dados específico e pode iniciar uma Transação.
DB2Command Executa um comando em um banco de dados e expõe Parâmetros.
DB2DataReader Expõe e lê um fluxo de dados apenas de avanço a partir de um banco de dados.
DB2DataAdapter Ocupa um DataSet e resolve atualizações com a origem de dados.

Junto com as classes principais listadas na tabela precedente, os provedores de dados .NET também contêm as classes listadas na seguinte tabela.

Objeto Descrição
ClientPermission Fornecido para atributos de segurança de acesso ao código do .NET data provider.
CommandBuilder Um objeto auxiliar gerará automaticamente propriedades de comandos de um DataAdapter ou derivará informações do parâmetro de um procedimento armazenado e ocupará a coleta de Parameters de um objeto Command.
Error Expõe as informações a partir de um aviso ou erro retornado por uma origem de dados.
Exceção Retornado quando é encontrado um erro no banco de dados. Para um erro encontrado no cliente, os .NET data providers emitem uma exceção do .NET Framework.
Parâmetro Define parâmetros de entrada, de saída e de valor de retorno para comandos e procedimentos armazenados.
Transação Permite incluir comandos em transações no banco de dados.

Para utilizar o DB2 .NET Data Provider, é necessário adicionar uma instrução imports ou using para o espaço de nomes do IBM.Data.DB2 a seu aplicativo .DLL, conforme ilustra o seguinte código:

1- [Visual Basic] - Imports IBM.Data.DB2
2- [C#] - using IBM.Data.DB2;

Você também deve incluir uma referência a .DLL quando compilar seu código. Por exemplo, se estiver compilando um programa C#, sua linha de comandos deverá incluir:

csc /r:%DB2PATH%\bin\netf11\IBM.Data.DB2.dll

Para estabelecer uma conexão com um dos sistemas do DB2 Universal Database suportados, é necessário construir um objeto de DB2Connection e fornecer a ele uma cadeia de conexão DB2 .NET válida. Consulte a propriedade DB2Connection.ConnectionString para informações sobre as palavras-chave suportadas.

Para obter informações detalhadas sobre como melhor utilizar o IBM.Data.DB2 namespace, consulte a documentação nas seguintes classes do DB2 .NET Data Provider:

Se você quiser exemplos de aplicações acesse o link:   http://www.ibm.com/software/data/db2/udb/ad/v8/samples.html

Para não falar que não mostrei nada a seguir um trecho de código que cria uma conexão com o DB2.

Public Sub CreateDB2Connection()
    Dim myConnString As String = "DATABASE=SAMPLE;"
    Dim myConnection As New DB2Connection(myConnString)
    myConnection.Open()
    MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + ControlChars.Cr + "Database: " + myConnection.Database.ToString())
    myConnection.Close()
End Sub

Nota: O objeto DB2Connection utiliza recursos nativos. Você sempre deve fechar explicitamente quaisquer objetos DB2Connection, chamando Close ou Dispose antes do objeto DB2Connection ficar fora de escopo.Se isso não for feito, a liberação destes recursos nativos vai para a coleta de lixo, que pode não liberá-los imediatamente. Isto, por sua vez, pode fazer com que eventualmente o DB2 .NET Data Provider ou o servidor DB2 fique sem recursos ou alcance um limite máximo, resultando em falhas esporádicas. Por exemplo, você pode encontrar erros relacionados ao Número Máximo de Conexões enquanto várias conexões estão aguardando para ser excluídas pelo coletor de lixo. Fechar explicitamente as conexões, chamando Close ou Dispose permite uma utilização mais eficiente de recursos nativos, melhorando a escalabilidade e o desempenho geral do aplicativo. (IBM)

Abaixo um exemplo que cria um DB2Command, em seguida, executa-o, transmitindo uma cadeia que é uma instrução SQL SELECT e uma cadeia a ser utilizada para conexão com o banco de dados

Public Sub CreateMyDB2DataReader(mySelectQuery As String, myConnectionString As String)
    Dim myConnection As New DB2Connection(myConnectionString)
    Dim myCommand As New DB2Command(mySelectQuery, myConnection)
    myCommand.Connection.Open()
    Dim myReader As DB2DataReader = myCommand.ExecuteReader()
    Try
      While myReader.Read()
          Console.WriteLine(myReader.GetString(0))
      End While
    Finally
      myReader.Close()
      myConnection.Close()
    End Try
 End Sub

Esta louco para saber a string de conexão, pois bem,  segue abaixo um exemplo para tcp/ip:

Provider=IBMDADB2;Database=sample;HOSTNAME=db2host;PROTOCOL=TCPIP;PORT=50000;uid=myUserName;pwd=myPwd;

Fica aqui este serviço de utilidade pública para quem precisa acessar o DB2 usando a ADO.NET. Para saber detalhes acesso o site da IBM.

Bom estudo e até o próximo artigo VB.NET...


José Carlos Macoratti