Desenvolvimento - C#
Acessando o PostgreSQL com Visual C#.NET
Este artigo dedica-se a apresentar uma forma simples de utilização do ODBC Data Provider para conectar-se à um banco de dados PostgreSQL usando o Visual C#.NET (ou outra linguagem portada para o Microsoft.NET Framework).
por Carlos de MattosO Microsoft.NET CLR (Common Language Runtime) oferece várias opções de conexão para os mais diversos bancos de dados. Este artigo dedica-se a apresentar uma forma simples de utilização do ODBC Data Provider para conectar-se à um banco de dados PostgreSQL usando o Visual C#.NET (ou outra linguagem portada para o Microsoft.NET Framework.
ODBC Driver para PostgreSQL
O primeiro passo é verificar se você já possui o driver ODBC para PostgreSQL. Você pode verificar a existência deste driver através da janela ODBC Data Source Administrator (Figura 1) que pode ser acessada através do Painel de Controle à Ferramentas Administrativas à Data Sources (ODBC).
Figura 1: ODBC Data Sources
Caso você não possua esse driver instalado em seu computador, antes de prosseguir, você deverá realizar a instalação utilizando o arquivo [psqlodbc.msi] contido no pacote disponível para download deste artigo. É importante esclarecer que para obter os drivers atualizados e para versões específicas do PostgreSQL o desenvolvedor deverá acessar o website http://gborg.postgresql.org/project/psqlodbc/genpage.php?downloads. O arquivo que acompanha este artigo é compatível com a versão 7.03.02.00 e foi utilizado apenas para ilustrar os procedimentos apresentados.
Instalando o driver ODBC para PostgreSQL
Execute o arquivo [psqlodbc.msi] e siga os passos do assitente apresentado na Figura 2. O assistente para instalação do psqlODBC é bastante simples e a instalação é rápida.
Figura 2: O Assistente para instalação do driver ODBC para PostgreSQL.
Após concluir este procedimento, você precisará criar o arquivo DSN de usuário. Para isto, abra novamente a janela ODBC Data Source Administrator, selecione a guia User DSN e clique no botão [Add...], será exibida a janela Create New Datasource (Figura 3), selecione o driver PostgreSQL desejado e clique no botão [Finish].
Figura 3: Janela Create New Data Source
Após clicar no botão [Finish] o sistema exibirá outro diálogo, a janela PostgreSQL ODBC Driver Setup (Figura 4). Nesta janela o desenvolvedor deverá informar os dados básicos para conexão com seu banco de dados e uma descrição que será utilizada para referirmos à fonte de dados no código da aplicação. Configurações mais avançadas podem ser definidas através do botão [Datasource].
Figura 4: A janela PostgreSQL ODBC Driver Setup
Neste ponto, o desenvolvedor já poderá escrever aplicações com o Visual C#.NET (ou qualquer outra linguagem portada para o Microsoft.NET Framework) para acessar suas bases PostgreSQL. O ODBC.NET Provider que acompanha o Visual Studio.NET oferece um conjunto de classes como OdbcConnection, OdbcCommand e OdbcDataReader; que provêem as funcionalidades necessárias para você comunicar-se com seu servidor PostgreSQL e administrar suas bases de dados. Um bom conhecimento sobre os objetos do ADO.NET será fundamental para que o desenvolvedor possa implementar suas aplicações.
Implementando o código da aplicação Para ilustar este exemplo, será necessário a criação de uma tabela que será acessada pela nossa aplicação. O script necessário para criação desta tabela e alimentação de alguns registros iniciais é apresentado na Listagem 1.
CREATE TABLE TesteCSharp ( ID serial, Texto text, Acessado timestamp ); INSERT INTO TesteCSharp(Texto, Acessado) VALUES("Exemplo 1", now()); INSERT INTO TesteCSharp(Texto, Acessado) VALUES("Exemplo 2", now()); INSERT INTO TesteCSharp(Texto, Acessado) VALUES("Exemplo 3", now()); INSERT INTO TesteCSharp(Texto, Acessado) VALUES("Exemplo 4", now()); INSERT INTO TesteCSharp(Texto, Acessado) VALUES("Exemplo 5", now());
Listagem 1: A tabela TesteCSharp
Abaixo, você encontrará a Listagem 2 que apresenta a classe PostgreSQL_Sample implementada com Visual C#.NET que demonstra como estabelecer uma conexão com seu servidor PostgreSQL. Observe o código.
using System; using System.Data; using Microsoft.Data.Odbc; class PostgreSQL_Sample { [STAThread] static void Main(string[] args) { // string de conexão string cnString = "DSN=dsnPostgreSQL;UID=cmattos;PWD=***;"; // cria o objeto OdbcConnection OdbcConnection cnPostgreSQL = new OdbcConnection(cnString); // O código a seguir demonstra como capturer e reporter uma ODBC exception. // Para manter a simplicidade, este será o único tratamento de Exception neste exemplo. try { cnPostgreSQL.Open(); } catch (OdbcException ex) { Console.WriteLine (ex.Message + "\n\n" + "StackTrace: \n\n" + ex.StackTrace); // Pausa para o usuário ler a mensagem Console.WriteLine("\n Pressione qualquer tecla para continuar..."); Console.Read(); return; } // Cria o objeto DataSet DataSet ds = new DataSet(); OdbcDataAdapter da = new OdbcDataAdapter(); OdbcCommandBuilder cb = new OdbcCommandBuilder(da); da.SelectCommand = new OdbcCommand("SELECT ID, Texto, Acessado FROM TesteCSharp", cnPostgreSQL); da.Fill(ds); // Exibe o número de registros da tabela Console.WriteLine("A Tabela [TesteCSharp] contém {0} registros.\n", ds.Tables[0].Rows.Count); // Exibe os nomes das colunas da tabela Console.WriteLine("Colunas\n=======\n"); foreach(DataColumn dc in ds.Tables[0].Columns) { Console.WriteLine("{0} ({1})", dc.ColumnName, dc.DataType); Console.WriteLine("\n"); } cnPostgreSQL.close(); }
Listagem 2: A classe PostgreSQL_Sample
.NET Data Provider for PostgreSQL
Um informação muito importante para o desenvolvedor é que já encontra-se em desenvolvimento o .NET Data Provider for PostgreSQL. Informações detalhadas sobre o Npgsql (como foi batizado) podem ser obtidas no endereço http://gborg.postgresql.org/project/npgsql/projdisplay.php, contudo, o site informa que ainda não há uma versão estável pronta para distribuição. O desenvolvedor que utiliza o PostgreSQL deve ficar atento para a liberação desta ferramenta.
PostgreSQLDirect.NET Data Provider
Outra alternativa, para os desenvolvedores que estão dispostos a desembolsar alguns dólares, é o PostgreSQLDirect.NET Data Provider fornecido pela empresa CoreLab Software Development. Este componente oferece vários recursos para o acesso e administração de bases de dados PostgreSQL (ver Figura 5). A CoreLab também oferece Data Providers customizados para bases de dados SQL Server, Oracle, MySQL e DB2. Visite o website da empresa em http://www.crlab.com/ para obter maiores informações sobre os produtos. Informações mais detalhadas sobre o PostgreSQLDirect.NET Data Provider podem ser encontradas no endereço http://www.crlab.com/pgsqlnet/.
Figura 5: Ferramentas do PostgreSQL Direct.NET
Mais informações sobre o PostgreSQL podem ser obtidas através do website http://www.postgresql.org/.