Todos os produtos
Search
Central de documentação

PolarDB:.NET

Última atualização: Aug 26, 2026

Este tópico descreve como usar o driver PolarDB .NET para conectar sua aplicação C# a um banco de dados PolarDB for PostgreSQL (Compatible with Oracle).

Pré-requisitos

  • Crie uma conta de banco de dados no cluster PolarDB. Para mais informações, consulte Create a database account.

  • Adicione os endereços IP dos hosts que precisam acessar o cluster PolarDB a uma lista de permissões. Para mais informações, consulte Set a cluster whitelist.

Informações gerais

O PolarDB .NET, também conhecido como ADO.NET Data Provider for PolarDB, é um driver que permite o acesso ao PolarDB por aplicações escritas em C#, Visual Basic ou F#. Esse driver é compatível com Entity Framework Core e Entity Framework 6.x, possibilitando o desenvolvimento rápido de aplicações com Entity Framework.

O driver atual utiliza o protocolo PostgreSQL 3.0 e oferece compatibilidade com .NET Framework 2.0, .NET Framework 4.0, .NET Framework 4.5 e .NET Core 2.0.

Nas versões anteriores do driver PolarDB .NET, muitos tipos internos tinham o prefixo POLARDB. Esses nomes foram alterados para PolarDB. Para atualizar seu código, substitua o texto correspondente. A lógica subjacente do driver não sofreu alterações; portanto, você pode fazer o upgrade com segurança.

Entity Framework

Entity Framework é um framework popular de mapeamento objeto-relacional (ORM) para a plataforma .NET. Ao desenvolver aplicações back-end em C#, o uso combinado de Entity Framework e Language-Integrated Query (LINQ) acelera significativamente o desenvolvimento.

O driver PolarDB .NET fornece DLLs com suporte a Entity Framework 5 (EF5) e Entity Framework 6 (EF6).

Para mais detalhes sobre o Entity Framework, consulte o site oficial do Entity Framework.

Instale o driver .NET

  1. Baixe o driver .NET.

  2. Descompacte o pacote do driver .NET.

    unzip polardb_oracle_.net.zip
  3. Importe o driver para seu projeto no Visual Studio.

    1. Na interface do Visual Studio, clique em com o botão direito no projeto e selecione Add Reference.

    2. Na caixa de diálogo Reference Manager, clique em em Browse.

      Use o botão Browse... para selecionar os arquivos de referência.

    3. Na caixa de diálogo Select the files to reference, selecione a versão apropriada do driver e clique em em Add.

      Por exemplo, se estiver usando .NET Framework 4.5 (pasta net45), referencie quatro arquivos DLL: PolarDB.PolarDBClient.dll, System.Runtime.CompilerServices.Unsafe.dll, System.Threading.Tasks.Extensions.dll e System.ValueTuple.dll.

    4. Clique em em OK.

Exemplo

Siga estas etapas para executar os projetos de exemplo.

  1. Conecte-se ao cluster de banco de dados. Para mais informações, consulte Connect to a database cluster.

  2. Execute o comando a seguir para criar um banco de dados chamado sampledb.

    CREATE DATABASE sampledb;
  3. Importe as tabelas, os dados e as funções necessários para o exemplo no banco de dados sampledb.

    \i ${your path}/PolarDBSample.sql
  4. Após importar os dados, comece a escrever seu código C#.

    Veja a seguir um exemplo de consulta, atualização e chamada de stored procedures.

    using System;
    using System.Data;
    using PolarDB.PolarDBClient;
    /*
     * This class provides a simple way to perform DML operations in PolarDB
     *
     * @revision 1.0
     */
    namespace PolarDBClientTest
    {
        class SAMPLE_TEST
        {
            static void Main(string[] args)
            {
                PolarDBConnection conn = new PolarDBConnection("Server=localhost;Port=5432;User Id=polaruser;Password=password;Database=sampledb");
                try
                {
                    conn.Open();
                    //Simple select statement using PolarDBCommand object
                    PolarDBCommand PolarDBSeletCommand = new PolarDBCommand("SELECT EMPNO,ENAME,JOB,MGR,HIREDATE FROM EMP",conn);
                    PolarDBDataReader SelectResult =  PolarDBSeletCommand.ExecuteReader();
                    while (SelectResult.Read()) 
                    {
                        Console.WriteLine("Emp No" + " " + SelectResult.GetInt32(0));
                        Console.WriteLine("Emp Name" + " " + SelectResult.GetString(1));
                        if (SelectResult.IsDBNull(2) == false)
                            Console.WriteLine("Job" + " " + SelectResult.GetString(2));
                        else
                            Console.WriteLine("Job" + " null ");
                        if (SelectResult.IsDBNull(3) == false)
                            Console.WriteLine("Mgr" + " " + SelectResult.GetInt32(3));
                        else
                            Console.WriteLine("Mgr" + "null");
                        if (SelectResult.IsDBNull(4) == false)
                            Console.WriteLine("Hire Date" + " " + SelectResult.GetDateTime(4));
                        else
                            Console.WriteLine("Hire Date" + " null");
                        Console.WriteLine("---------------------------------");
                    }
                    //Insert statement using PolarDBCommand Object
                    SelectResult.Close();
                    PolarDBCommand PolarDBInsertCommand = new PolarDBCommand("INSERT INTO EMP(EMPNO,ENAME) VALUES((SELECT COUNT(EMPNO) FROM EMP),'JACKSON')",conn);
                    PolarDBInsertCommand.ExecuteScalar();
                    Console.WriteLine("Record inserted");
                    //Update  using PolarDBCommand Object
                    PolarDBCommand  PolarDBUpdateCommand = new PolarDBCommand("UPDATE EMP SET ENAME ='DOTNET' WHERE EMPNO < 100",conn);
                    PolarDBUpdateCommand.ExecuteNonQuery();
                    Console.WriteLine("Record has been updated");
                    PolarDBCommand PolarDBDeletCommand = new PolarDBCommand("DELETE FROM EMP WHERE EMPNO < 100",conn);
                    PolarDBDeletCommand.CommandType= CommandType.Text;
                    PolarDBDeletCommand.ExecuteScalar();
                    Console.WriteLine("Record deleted");
                    //procedure call example
                    try
                    {
                        PolarDBCommand callable_command = new PolarDBCommand("emp_query(:p_deptno,:p_empno,:p_ename,:p_job,:p_hiredate,:p_sal)", conn);
                        callable_command.CommandType = CommandType.StoredProcedure;
                        callable_command.Parameters.Add(new PolarDBParameter("p_deptno",PolarDBTypes.PolarDBDbType.Numeric,10,"p_deptno",ParameterDirection.Input,false ,2,2,System.Data.DataRowVersion.Current,20));
                        callable_command.Parameters.Add(new PolarDBParameter("p_empno", PolarDBTypes.PolarDBDbType.Numeric,10,"p_empno",ParameterDirection.InputOutput,false ,2,2,System.Data.DataRowVersion.Current,7369));
                        callable_command.Parameters.Add(new PolarDBParameter("p_ename", PolarDBTypes.PolarDBDbType.Varchar,10,"p_ename",ParameterDirection.InputOutput,false ,2,2,System.Data.DataRowVersion.Current,"SMITH"));
                        callable_command.Parameters.Add(new PolarDBParameter("p_job", PolarDBTypes.PolarDBDbType.Varchar,10,"p_job",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null));
                        callable_command.Parameters.Add(new PolarDBParameter("p_hiredate", PolarDBTypes.PolarDBDbType.Date,200,"p_hiredate",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null));
                        callable_command.Parameters.Add(new PolarDBParameter("p_sal", PolarDBTypes.PolarDBDbType.Numeric,200,"p_sal",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null));
                        callable_command.Prepare();
                        callable_command.Parameters[0].Value = 20;
                        callable_command.Parameters[1].Value = 7369;
                        PolarDBDataReader result = callable_command.ExecuteReader();
                        int fc = result.FieldCount;
                        for(int i=0;i<fc;i++)
                            Console.WriteLine("RESULT["+i+"]="+ Convert.ToString(callable_command.Parameters[i].Value));
                        result.Close();
                    }
                    // If you are using the .NET 2.0 driver, you may need to modify this section.
                    catch(PolarDBException exp)
                    {
                        if(exp.ErrorCode.Equals("01403"))
                            Console.WriteLine("No data found");
                        else if(exp.ErrorCode.Equals("01422"))
                            Console.WriteLine("More than one row was returned by the query");
                        else
                            Console.WriteLine("There was an error calling the procedure. \nRoot Cause:\n");
                        Console.WriteLine(exp.Message.ToString());
                    }
                    //Prepared statement
                    string updateQuery  = "update emp set ename = :Name where empno = :ID";
                    PolarDBCommand Prepared_command = new PolarDBCommand(updateQuery, conn);
                    Prepared_command.CommandType = CommandType.Text;
                    Prepared_command.Parameters.Add(new PolarDBParameter("ID", PolarDBTypes.PolarDBDbType.Integer));
                    Prepared_command.Parameters.Add(new PolarDBParameter("Name", PolarDBTypes.PolarDBDbType.Text));
                    Prepared_command.Prepare();
                    Prepared_command.Parameters[0].Value = 7369;
                    Prepared_command.Parameters[1].Value = "Mark";
                    Prepared_command.ExecuteNonQuery();
                    Console.WriteLine("Record Updated...");
                }
                catch(PolarDBException exp)
                {
                    Console.WriteLine(exp.ToString() );
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }

Parâmetros da string de conexão

Ao conectar sua aplicação a um banco de dados, forneça uma string de conexão contendo parâmetros como host, nome de usuário e senha.

O formato da string de conexão é keyword1=value; keyword2=value;. As palavras-chave não diferenciam maiúsculas de minúsculas. Coloque valores que contenham caracteres especiais, como ponto e vírgula, entre aspas duplas ("").

Este driver suporta os seguintes parâmetros de string de conexão.

Tabela 1. Conexão básica

Parâmetro

Exemplo

Descrição

Host

localhost

Endpoint do cluster PolarDB. Para mais informações, consulte View or apply for an endpoint.

Port

1521

Porta padrão do cluster PolarDB: 1521.

Database

sampledb

Nome do banco de dados de destino.

Username

polaruser

Nome de usuário do cluster PolarDB.

Password

password

Senha do usuário do cluster PolarDB.

Tabela 2. Pool de conexões

Parâmetro

Exemplo

Descrição

Pooling

true

Define se o pool de conexões deve ser ativado.

Minimum Pool Size

0

Quantidade mínima de conexões mantidas no pool.

Maximum Pool Size

100

Limite máximo de conexões permitidas no pool.

Connection Idle Lifetime

300

Tempo limite em segundos. Após esse período, conexões ociosas são fechadas caso o tamanho do pool exceda o Minimum Pool Size.

Connection Pruning Interval

10

Intervalo em segundos para remoção de conexões ociosas do pool.

Tabela 3. Outros parâmetros

Parâmetro

Descrição

Application name

Nome da aplicação.

Search path

Caminho de busca do schema.

Client encoding

Codificação do cliente.

Time zone

Fuso horário da sessão.