全部产品
Search
文档中心

PolarDB:.NET

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan Penyedia Data ADO.NET untuk PolarDB for PostgreSQL (Kompatibel dengan Oracle) (PolarDB .NET) driver untuk menghubungkan aplikasi C# ke database PolarDB for PostgreSQL (Kompatibel dengan Oracle).

Prasyarat

  • Seorang pengguna telah dibuat di kluster PolarDB. Untuk informasi tentang cara membuat pengguna, lihat Buat akun database.

  • Alamat IP dari host yang digunakan untuk mengakses kluster PolarDB telah ditambahkan ke daftar putih kluster. Untuk informasi tentang cara menambahkan alamat IP ke daftar putih kluster, lihat Konfigurasikan daftar putih untuk kluster.

Informasi latar belakang

PolarDB .NET adalah driver yang memungkinkan Anda menggunakan bahasa pemrograman seperti C#, Visual Basic, dan F# untuk terhubung ke database PolarDB for PostgreSQL (Kompatibel dengan Oracle). Driver PolarDB .NET kompatibel dengan Entity Framework Core dan Entity Framework 6.x. Anda dapat menggunakan PolarDB .NET bersama dengan Entity Framework untuk mengembangkan aplikasi dengan cepat.

Driver PolarDB .NET menggunakan versi 3.0 protokol PostgreSQL. Driver ini kompatibel dengan .NET Framework 2.0, .NET Framework 4.0, .NET Framework 4.5, dan .NET Core 2.0.

Pada versi sebelumnya dari driver PolarDB .NET, sebagian besar nama kelas dimulai dengan POLARDB. Pada versi terbaru, nama kelas dimulai dengan PolarDB. Oleh karena itu, Anda harus mengganti POLARDB dengan PolarDB dalam kode Anda. Logika dalam driver tidak dimodifikasi, sehingga layanan tidak terpengaruh setelah Anda memperbarui driver dan mengubah kode Anda.

Ikhtisar Entity Framework

Entity Framework adalah kerangka kerja pemetaan objek-relasional (ORM) yang banyak digunakan di platform .NET. Entity Framework dan teknologi Language-Integrated Query (LINQ) menyediakan metode cepat bagi Anda untuk mengembangkan aplikasi backend C#.

Driver PolarDB .NET menyediakan file .dll dari Entity Framework 5 (EF5) dan Entity Framework 6 (EF6), yang berlaku untuk PolarDB for PostgreSQL (Kompatibel dengan Oracle). Ini membantu Anda menggunakan Entity Framework.

Untuk informasi lebih lanjut tentang Entity Framework, kunjungi situs resmi Entity Framework.

Instal driver PolarDB .NET

  1. Unduh paket PolarDB .NET driver.
  2. Ekstrak paket driver PolarDB .NET.
    unzip polardb_oracle_.net.zip
  3. Impor driver ke proyek Visual Studio.
    1. Di panel navigasi sisi kiri pada antarmuka pengguna grafis (GUI) Visual Studio, klik kanan Proyek dan pilih Add Reference.
    2. Dalam kotak dialog Reference Manager, klik Browse di panel navigasi sisi kiri, lalu klik tombol Browse....
      Visual Studio-1
    3. Dalam kotak dialog Select the files to reference, pilih driver dan klik Add.
      Visual Studio-2
    4. Klik OK.

Contoh

Direktori Samples mencakup file PolarDBSample.sql dan beberapa file proyek contoh. Prosedur berikut menunjukkan cara menjalankan proyek contoh.

  1. Hubungkan ke database. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle).
  2. Jalankan pernyataan berikut untuk membuat database bernama sampledb.
    CREATE DATABASE sampledb;
  3. Impor tabel, data, dan fungsi yang diperlukan untuk pengujian ke database sampledb.
    \i ${your path}/PolarDBSample.sql
  4. Setelah data diimpor, tulis kode C#.

    Kode contoh berikut menunjukkan cara menanyakan, memperbarui, dan memanggil prosedur tersimpan dari proyek contoh.

    using System;
    using System.Data;
    using PolarDB.PolarDBClient;
    /*
     * Kelas ini memberikan cara sederhana untuk melakukan operasi DML di PolarDB
     *
     * @revisi 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();
    
                    //Pernyataan select sederhana menggunakan objek PolarDBCommand
                    PolarDBCommand PolarDBSeletCommand = new PolarDBCommand("SELECT EMPNO,ENAME,JOB,MGR,HIREDATE FROM EMP",conn);
                    PolarDBDataReader SelectResult =  PolarDBSeletCommand.ExecuteReader();
                    while (SelectResult.Read()) 
                    {
                        Console.WriteLine("Nomor Pegawai" + " " + SelectResult.GetInt32(0));
                        Console.WriteLine("Nama Pegawai" + " " + SelectResult.GetString(1));
                        if (SelectResult.IsDBNull(2) == false)
                            Console.WriteLine("Pekerjaan" + " " + SelectResult.GetString(2));
                        else
                            Console.WriteLine("Pekerjaan" + " null ");
                        if (SelectResult.IsDBNull(3) == false)
                            Console.WriteLine("Mgr" + " " + SelectResult.GetInt32(3));
                        else
                            Console.WriteLine("Mgr" + "null");
                        if (SelectResult.IsDBNull(4) == false)
                            Console.WriteLine("Tanggal Masuk" + " " + SelectResult.GetDateTime(4));
                        else
                            Console.WriteLine("Tanggal Masuk" + " null");
                        Console.WriteLine("---------------------------------");
                    }
    
                    //Pernyataan insert menggunakan objek PolarDBCommand
                    SelectResult.Close();
                    PolarDBCommand PolarDBInsertCommand = new PolarDBCommand("INSERT INTO EMP(EMPNO,ENAME) VALUES((SELECT COUNT(EMPNO) FROM EMP),'JACKSON')",conn);
                    PolarDBInsertCommand.ExecuteScalar();
                    Console.WriteLine("Catatan dimasukkan");
    
                    //Update menggunakan objek PolarDBCommand
                    PolarDBCommand  PolarDBUpdateCommand = new PolarDBCommand("UPDATE EMP SET ENAME ='DOTNET' WHERE EMPNO < 100",conn);
                    PolarDBUpdateCommand.ExecuteNonQuery();
                    Console.WriteLine("Catatan telah diperbarui");
                    PolarDBCommand PolarDBDeletCommand = new PolarDBCommand("DELETE FROM EMP WHERE EMPNO < 100",conn);
                    PolarDBDeletCommand.CommandType= CommandType.Text;
                    PolarDBDeletCommand.ExecuteScalar();
                    Console.WriteLine("Catatan dihapus");
    
                    //contoh panggilan prosedur
                    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("HASIL["+i+"]="+ Convert.ToString(callable_command.Parameters[i].Value));
                        result.Close();
                    }
                    // Jika versi driver adalah .NET 2.0, Anda harus memodifikasi pernyataan berikut:
                    catch(PolarDBException exp)
                    {
                        if(exp.ErrorCode.Equals("01403"))
                            Console.WriteLine("Tidak ada data yang ditemukan");
                        else if(exp.ErrorCode.Equals("01422"))
                            Console.WriteLine("Lebih dari satu baris dikembalikan oleh query");
                        else
                            Console.WriteLine("Ada kesalahan saat memanggil prosedur. \nPenyebab Utama:\n");
                        Console.WriteLine(exp.Message.ToString());
                    }
    
                    //Pernyataan siap
                    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("Catatan Diperbarui...");
                }
    
                catch(PolarDBException exp)
                {
                    Console.WriteLine(exp.ToString() );
                }
                finally
                {
                    conn.Close();
                }
    
            }
        }
    }

Parameter string koneksi

Aplikasi harus menyediakan string koneksi untuk terhubung ke database. String koneksi mencakup parameter host, nama pengguna, dan kata sandi.

String koneksi berada dalam format kata kunci1=nilai; kata kunci2=nilai;, dan tidak peka huruf besar-kecil. Anda dapat menggunakan tanda kutip ganda (") untuk mengapit nilai yang mengandung karakter khusus, seperti titik koma (;).

Driver saat ini mendukung parameter string koneksi berikut.

Tabel 1. Parameter Terkait Koneksi Dasar

ParameterContohDeskripsi
HostlocalhostTitik akhir dari kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle). Untuk informasi lebih lanjut tentang cara melihat titik akhir, lihat Lihat atau ajukan permohonan untuk titik akhir.
Port1521Port dari kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle). Nilai default: 1521.
DatabasesampledbNama database yang akan dihubungkan.
UsernamepolaruserNama pengguna yang digunakan untuk menghubungkan ke kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle).
PasswordpasswordKata sandi untuk nama pengguna dari kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle).

Tabel 2. Parameter Terkait Kolam Koneksi

ParameterContohDeskripsi
PoolingtrueMenentukan apakah akan mengaktifkan kolam koneksi.
Minimum Pool Size0Ukuran minimum dari kolam koneksi.
Maximum Pool Size100Ukuran maksimum dari kolam koneksi.
Connection Idle Lifetime300Periode waktu habis. Setelah periode waktu habis berakhir, koneksi idle ditutup di kolam jika jumlah semua koneksi melebihi nilai parameter Minimum Pool Size. Unit: detik.
Connection Pruning Interval10Interval untuk menghapus koneksi idle. Unit: detik.

Tabel 3. Parameter Lainnya

ParameterDeskripsi
application_nameNama aplikasi.
search_pathPath pencarian skema.
client_encodingPengkodean klien.
timezoneZona waktu sesi.