ASP .NET - Trabalhando com o PostGreSQL - I


Este artigo mostra como usar e acessar o banco de dados PostGreSQL em uma aplicação ASP .NET.

A primeira coisa que você vai fazer é baixar o gerenciador de banco de dados PostGreSQL no seguinte link:

http://wwwmaster.postgresql.org/download/

O pacote de instalação do PostgreSQL inclui o servidor PostgreSQL, o pgAdmin III, que é uma ferramenta gráfica para gerenciar os seus banco de dados e o StackBuilder, um pacote que pode ser usado para baixar e instalar aplicações PostegreSQL e drivers adicionais.

Note: Somente a partir da versão PostgreSQL 8.2 e superior a versão para o WIndows é suportada.

O link a para a versão Windows é o seguinte:

http://www.enterprisedb.com/products/pgdownload.do#windows

 Além disso existem outras ferramentas úteis que o ajudarão a trabalhar com o PostgreSQL :

Obs: Para instruções de instalação veja o meu artigo:  Acessando o PostgreSql

Nota : Você deve baixar o conector .NET para PostgreSQL - Npgsql - .Net Data Provider for Postgresql e referênciar no projeto.

Para referenciar o conector clique com o botão direito do mouse sobre o nome do projeto e selecione Add Reference;

Clique na aba Browse e localize onde esta o arquivo do conector Npgsql.dll e clique em OK;

Após instalar o PostgreSQL, para administrá-lo devemos usar uma ferramenta gráfica para facilitar o nosso trabalho vamos usar o pgAdmin III que é instalado junto com o PostgreSQL.

Abrindo o pgAdmin a primeira tela que será mostrada é a tela abaixo:

A tela à esquerda mostra as conexões com o servidor do banco de dados e temos apenas uma conexão.

Para se conectar com o banco de dados clique com o botão direito sobre a conexão e selecione Conectar/Connect.

Será solicitada a sua senha de acesso e após a sua confirmação a tela abaixo será exibida:

    Obs: Ao clicar em (+) da opção Databases veremos o banco de dados PostgreSql que é criado automaticamente na instalação. (Esse banco de dados não será     utilizado e não pode ser excluído por se tratar de um banco utilizado para administração do Postgresql.)

Expandindo as opções veremos uma hierarquia de objetos:

De forma resumida temos os seguintes objetos:

Para criar uma nova tabela clique com o botão direito sobre o objeto Tabelas ou Tables e selecione Nova Table ou New Table;

Informe o nome clientes para a nova tabela, de preferência para usar nomes em letras minúsculas.

Para definir os campos clique na aba Columns e informe o nome e tipo da coluna. Lembrando que um campo auto-numeração no PostGreSQL deve ser definido como to tipo Serial;

Após definir os campos podemos editar a tabela e incluir uma linha conforme a figura abaixo:

Se desejar pode usar uma instrução SQL para incluir, alterar, excluir registros na tabela. Clique com o botão direito sobre o nome da tabela e selecione Scripts->Script INSERT. Será aberta a janela com o script bastando inserir o valor no lugar da ?:

Vamos agora realizar um teste de conexão com o banco de dados e acessar a tabela clientes em uma aplicação ASP .NET.

Abra o Visual Web Developer 2010 Express Edition e crie um novo projeto do tipo ASP .NET Web Site usando a linguagem Visual Basic com o nome de Acesso_PostgreSQL;

Em seguida vamos incluir uma referência ao conector PostgreSql Npgsql, clicando com o botão direito sobre o nome do projeto e selecionando Add Reference;

Em seguida selecione a guia Browse e localize onde foi instalado o conector PostgreSql e selecione o arquivo conforme abaixo:

A seguir no formulário web Default.aspx inclua um controle GridView e um controle Label conforme o leiaute abaixo;

Se desejar adote uma formatação qualquer para o controle GridView para exibir os dados.

O arquivo Default.aspx.vb no code-behind inclua o seguinte código no evento Load do formulário:

Imports Npgsql
Imports System.Data
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

           'define os parƒmetros da conexÆo

            Dim conn As NpgsqlConnection = Nothing

            Dim server As String = "127.0.0.1"

            Dim port As String = "5432"

            Dim database As String = "teste"

            Dim userId As String = "macoratti"

            Dim userPassword As String = "******"


          
'define a string de conexÆo

            Dim strcon As String = String.Format("Server={0};Port={1};Database={2};User Id={3};Password={4};", server, port, database, userId, userPassword)

 
        Try
            'Instancia NpgsqlConnection na variavel conn
            conn = New NpgsqlConnection(ConexaoPG)
            'Abre a conexão
            conn.Open()
            'Declara e atribui a instrucao SQL de consulta
            Dim SQL As String = "SELECT * FROM public.clientes"
            'Instancia o NpgsqlDataAdapter responsavel pela comunicação 
            'é feita a leitura dos dados preenchendo o dataset 
            Dim da As Npgsql.NpgsqlDataAdapter = New NpgsqlDataAdapter(SQL, conn)
            'Instacia um DataSet
            Dim ds As DataSet = New DataSet()
            'Preenche o DataAdapter 
            da.Fill(ds, "Clientes")
            'Atribui um Datasource a Grid
            GridView1.DataSource = ds.Tables(0).DefaultView
        Catch ex As Exception
            lblmsg.Text = ex.Message
        Finally
            If Not conn Is Nothing Then
                If conn.State = Data.ConnectionState.Open Then
                    conn.Close()
                End If
            End If
        End Try
    End Sub
End Class

A primeira coisa a mencionar é que os valores que definem os parâmetros de conexão usado referem-se ao da minha máquina local e por isso os seus valores serão diferentes.

Outra coisa importante é a instrução SQL usada:  "SELECT * FROM public.clientes"

o nome da tabela esta em letras minúsculas e precedida de public: public.clientes

Você pode ver o resultado clicando no link: http://www.macoratti.net/pgsql/

Obs: Estou exibindo apenas alguns registros.

Aguarde na continuação as rotinas para alterar, incluir e excluir dados no PostGreSQL.

Pegue o projeto completo aqui: Acesso_PostGreSQL.zip

Eu sei é apenas ASP .NET, mas eu gosto...

Referências:

José Carlos Macoratti