none
C# Conectar base PostgreSQL RRS feed

  • Pergunta

  • Amigos,

    sou novo em .net, estou tentando fazer uma conexao com o postgreSQL, já encontrei alguns exemplos na net mas gostaria de saber o que tem de mais moderno para a conexão com bases postgreSQL e qual a melhor forma de conexão, digo, odbc, oledb, etc.?

    Provider:

    using System;

     using System.Data;

     using Npgsql;  

     

    OODBC:

    using System.Data;

    using System.Data.Odbc;

    quarta-feira, 17 de agosto de 2011 14:29

Respostas

  • Fernando e Kyrla.

    Apos muitas pesquisas conseguir fazer funcionar os Drivers ODBC, então segue os precedimentos abaixo:

    1º Instalar Driver PostgreSQL ODBC para win x32 (psqlodbc_09_00_0310)

    2º Em Iniciar > Executar > Colar o comando > C:\WINDOWS\SysWOW64\odbcad32.exe > Abrira a Janela de "Administrador de Fonte de Dados ODBC" 32bits.

    3º Aba: Fontes de Dados de Usuário > Adicionar > Selecione o "Drive PostgreSQL Unicode" > Informe: Data Source: PostgreSQL > Description: PostgreSQL > Databese: Nome de sua base > SSL Mode: Disable > Server: Nome de seu servidor (se tiver instalado em sua maquina, de o nome de localhost) > Port: Numero da Porta  (se tiver instalado em sua maquina, numero: 5432) > User Name: Nome do usuario > Password: Senha.

    4º Clique em TEST para verificar a conexão.

    5º Se tiver OK salve e feche a Janela.

    * Para criar um string de conexão: Ctrl + Alt + S (Dabase Explorer)

    1. Clique com o botão direito do Maouse em "Add Connection"

    2. Definir o Data Source: Microsoft ODBC Data Source (ODBC) 

    3. Use User ou System data Source name: PostgreSQL (Nome que dei ao meu data source, acima)

    4. user name e password não são obrigatórios, mas é recomendável informar.

    5. sera gerado uma string de conexão, semelhante a esta: Dsn=PostgreSQL;uid=postgres

    OK Para finalizar.

    ------------------------------------------------------

    WIN 7 64bits

    POSTGRESQL 64bits

    ODBC 32bits (psqlodbc_09_00_0310)

    Microsoft Visual Web Developer 2010 Express

    ------------------------------------------------------

    sexta-feira, 19 de agosto de 2011 16:34

Todas as Respostas

  • Olá João,

    Acho que o melhor eh utilizar o provider de acesso a dados para o mesmo.

    Não tenho certeza se existe algo entre o Entity Framework e o PostgreSQL...

     

    Para o PostgreSQL existe este provider:

    http://pgfoundry.org/projects/npgsql/

    Faça o download da ultima versão, que é de 25 de Março de 2011

    O Thiago Cruz Soares fez uma avaliação da versão 1.0 dele a alguns anos:

    http://thiagocsoares.wordpress.com/2006/10/10/provider-postgresql-para-net/

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 14:45
    Moderador
  • Fernando. obrigado pela pronta resposta.

    Lá existe uma indinidade de arquivos para download. qual deles baixo, vaja abaixo:

     Preview 1   2011-05-12 00:08
    Npgsql.Provider.zip
    1.74 MB 5,041 Any .zip
    README.TXT
    139 bytes 2,934 Any text

    _npgsql2 Monitor this package

     
      Npgsql2.0.11.91   2011-03-25 02:18
    Npgsql2.0.11.91-apidocs-chm.zip
    410 KB 3,900 Any .zip
    Npgsql2.0.11.91-apidocs-html.zip
    1.42 MB 2,027 Any .zip
    Npgsql2.0.11.91-bin-mono2.0.tar.bz2
    597 KB 717 Any .bz2
    Npgsql2.0.11.91-bin-mono2.0.zip
    602 KB 1,864 Any .zip
    Npgsql2.0.11.91-bin-ms.net.zip
    465 KB 4,446 Any .zip
    Npgsql2.0.11.91-bin-ms.net3.5sp1.zip
    511 KB 4,603 Any .zip
    Npgsql2.0.11.91-bin-ms.net4.0.zip
    537 KB 6,981 Any .zip
    Npgsql2.0.11.91.src.tar.bz2
    2.47 MB 1,327 Any Source .bz2
    Npgsql2.0.11.91.src.zip
    3.05 MB 3,346 Any Source .zip
    quarta-feira, 17 de agosto de 2011 15:12
  • João,

    Vc verá que na página de download existe um tópico chamado preview 1

    Baixe através de um dos links que estão logo abaixo com o título Npgsql.Provider.zip

    Depois de feito o download e extraido o conteúdo do arquivo ZIP, acesse a pasta \pgsql-2.0.11.91\bin\Debug4 e utilize o binário Npgsql.dll

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 16:03
    Moderador
  • Fernando,

    Para usar o binario preciso fazer uma referencia?

    Jogo a Npgsql-2.0.11.91 no meu projeto ou deixo ela em qualquer lugar no pc?

     

     

    quarta-feira, 17 de agosto de 2011 16:24
  • Olá João,

    Sim, vc prefica fazer uma referência a dll Npgsql.dll

    Não precisa jogar o projeto Npgsql-2.0.11.91 no seu... a referência a dll Npgsql.dll é feita para que vc não inclua dependa deste código em sua solução...

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 16:27
    Moderador
  • certo. ocorreu um erro:

    segue abaixo a classe:

        public class cnxPostgre

        {

            //public static void Main(String[] args)

            public void PostgreSQL()

            {

                int i;

                NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=admin;Database=locadora;");

                conn.Open();

     

                NpgsqlCommand command = new NpgsqlCommand("select * from tablea", conn);

     

     

                try

                {

                    NpgsqlDataReader dr = command.ExecuteReader();

                    while (dr.Read())

                    {

                        for (i = 0; i < dr.FieldCount; i++)

                        {

                            Console.Write("{0} \t", dr[i]);

                        }

                        Console.WriteLine();

                    }

     

                }

     

                finally

                {

                    conn.Close();

                }

            }

        }

     

    erro:

    Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. O sistema não pode encontrar o arquivo especificado.

    Source Error:

    Line 14:     {
    Line 15:       int i;
    Line 16:       NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=admin;Database=locadora;");
    Line 17:       conn.Open();
    
    quarta-feira, 17 de agosto de 2011 16:32
  • Cara,

    Agora fiquei em dúvida qual a DLL correta...

    Ou é essa da pasta "\pgsql-2.0.11.91\bin\Debug4" e vc terá de fazer referência a dll Mono.Security.dll (q esta também no mesmo diretório)

    Ou a DLL "Npgsql.Provider.dll" que está na pasta "Npgsql.Provider2\bin\Debug"

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 16:41
    Moderador
  • vou testar a segunda opcao

     

    quarta-feira, 17 de agosto de 2011 16:51
  • A segunda opção não deu certo. Mais alguma opção?
    quarta-feira, 17 de agosto de 2011 19:17
  • Testou a primeira?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 19:18
    Moderador
  • Testei a primeira e a segunda?

    Fernando, vc viu outro topico que a usuaria teve dificuldades para conectar via odbc? ela cita algum procedimento que ela fez que deu certo, mas não sabe descrever o local exato que fez o procedimento.

    quarta-feira, 17 de agosto de 2011 19:21
  • Olá João,

     

    A Kyrla utilizou a aba Server Explorer (Ctrl + Alt + S), depois selecionou a opção DataConnections, e depois clicou com o botão direito e clicou em "Add Connection"...

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    quarta-feira, 17 de agosto de 2011 19:25
    Moderador
  • não deu certo...ocorre o erro [IM014] incompatibilidade de drivers.

    eu utilizei o mesmo drive que ela esta usando....

     

    WIN 7

    Microsoft Visual Web Developer

    PostgreSQL 9.0.4, compiled by Visual C++ build 1500, 64-bit

    quarta-feira, 17 de agosto de 2011 19:38
  • talvez o problema esteja no win 7 64bits.

    os unicos driver que funcionam na maquina são:

     

    psqlodbc_09_00_0101-x64.zip 2010-10-16 15:28:54 1.7 MB

    psqlodbc_09_00_0200-x64.zip 2010-10-30 16:18:54 1.7 MB

    psqlodbc_09_00_0300-x64.zip 2011-05-09 12:56:07 1.7 MB

    psqlodbc_09_00_0310-x64.zip 2011-07-08 15:15:37 1.7 MB

    consigo estabelar conexao com vb6, criando arquivo .udl e muito mais, mas conectar via c#.net nada!

     

    quarta-feira, 17 de agosto de 2011 20:32
  • Fernando e Kyrla.

    Apos muitas pesquisas conseguir fazer funcionar os Drivers ODBC, então segue os precedimentos abaixo:

    1º Instalar Driver PostgreSQL ODBC para win x32 (psqlodbc_09_00_0310)

    2º Em Iniciar > Executar > Colar o comando > C:\WINDOWS\SysWOW64\odbcad32.exe > Abrira a Janela de "Administrador de Fonte de Dados ODBC" 32bits.

    3º Aba: Fontes de Dados de Usuário > Adicionar > Selecione o "Drive PostgreSQL Unicode" > Informe: Data Source: PostgreSQL > Description: PostgreSQL > Databese: Nome de sua base > SSL Mode: Disable > Server: Nome de seu servidor (se tiver instalado em sua maquina, de o nome de localhost) > Port: Numero da Porta  (se tiver instalado em sua maquina, numero: 5432) > User Name: Nome do usuario > Password: Senha.

    4º Clique em TEST para verificar a conexão.

    5º Se tiver OK salve e feche a Janela.

    * Para criar um string de conexão: Ctrl + Alt + S (Dabase Explorer)

    1. Clique com o botão direito do Maouse em "Add Connection"

    2. Definir o Data Source: Microsoft ODBC Data Source (ODBC) 

    3. Use User ou System data Source name: PostgreSQL (Nome que dei ao meu data source, acima)

    4. user name e password não são obrigatórios, mas é recomendável informar.

    5. sera gerado uma string de conexão, semelhante a esta: Dsn=PostgreSQL;uid=postgres

    OK Para finalizar.

    ------------------------------------------------------

    WIN 7 64bits

    POSTGRESQL 64bits

    ODBC 32bits (psqlodbc_09_00_0310)

    Microsoft Visual Web Developer 2010 Express

    ------------------------------------------------------

    sexta-feira, 19 de agosto de 2011 16:34
  • Boa! Mandou bem! :)
    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    sexta-feira, 19 de agosto de 2011 16:36
    Moderador